Eu tenho duas versões dos trilhos (2.1.0 e 2.2.2) instaladas no meu computador.
Quando crio um novo aplicativo, é possível especificar que desejo usar a versão mais antiga (2.1.0)?
ruby-on-rails
hectorsq
fonte
fonte
Respostas:
Encontrei aqui uma opção não documentada para criar um novo aplicativo usando uma versão mais antiga do Rails.
fonte
_3.1.3_
new sample_app /home/ninad/.rbenv/versions/1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb:314:inbin_path': can't find gem railties (["3.1.3"]) with executable rails (Gem::GemNotFoundException) from /home/ninad/.rbenv/versions/1.9.2-p290/bin/rails:19:in
<main> 'Aqui está o comando que eu uso normalmente:
por exemplo
rails _2.1.0_ new my_app
Aqui está a lista de todas as versões de trilhos disponíveis até o momento:
http://rubygems.org/gems/rails/versions
fonte
Eu estava com problemas para usar
rails _version_ new application_name
(o projeto resultante ainda foi gerado para a versão mais recente do Rails instalada.)Depois de um pouco de pesquisa, encontrei um artigo de Michael Trojanek com uma abordagem alternativa. Isso funciona criando uma pasta com um Gemfile especificando a versão desejada do Rails e depois usando
bundle exec rails...
para que o Bundler cuide da execução da versão apropriada dorails
. por exemplo, para criar um novo projeto do Rails 4.2.9, as etapas são:fonte
bundle update
, ele também atualizará os trilhos !!bundle update
é necessário porque uma atualização manual está sendo usada (--skip-bundle
). Rails não será atualizado porque uma versão específica é especificado no Gemfile (4.2.9 no exemplo.)--force
está substituindo o Gemfilebundle exec rails new...
executou a versãorails
especificada no Gemfile que acaba sendo substituída.)gem 'rails', '5.0.0.1' >> Gemfile
e depois de executarbundle exec rails new
com a opção --force, estágem 'rails', '~> 5.0.0', '>= 5.0.0.1'
no Gemfile. Agora, quando eu corrobundle update
, está atualizando os trilhos para 5.0.4 (em Gemfile.lock), mas eu esperava usar a versão 5.0.0.1 do railsConforme corretamente apontado por @mikej para o Rails 5.0.0 ou superior , você deve seguir estas etapas:
Crie um diretório para o seu aplicativo junto com um Gemfile para especificar a versão desejada do Rails e deixe o bundler instalar as gemas dependentes:
Verifique se a versão correta dos trilhos foi instalada:
$ bundle exec rails -v
Agora crie seu aplicativo, deixe o Rails criar um novo Gemfile (ou melhor, substitua o existente usando a
--force
flag) e, em vez de instalar o pacote (--skip-bundle
), atualize-o manualmente:Se você verificar a entrada para trilhos
Gemfile
, deve ser assim:Você deve atualizá-lo para a versão exata necessária para o aplicativo:
Agora, o passo final:
fonte
Você pode gerar o esqueleto com uma das versões e exigir a que deseja
config/environment.rb
:ou use o comando "rails" da versão que você deseja.
fonte
Você também deve "congelar" suas gemas Rails no aplicativo. Isso ajuda muito na implantação, especialmente em ambientes de hospedagem compartilhada.
Basta alterar a
RAILS_GEM_VERSION
variávelconfig/environment.rb
e emitir a tarefa freeze rake:fonte
Existem duas maneiras de conseguir isso:
um como sugerido na resposta aceita:
O método alternativo é criar gemfile com a versão desejada do rails antes de inicializar o projeto do rails
Eu escrevi sobre isso em detalhes no meu artigo
fonte