Specifica della versione dei binari da utilizzare durante la creazione di una nuova applicazione

Ho due versioni di guide (2.1.0 e 2.2.2) installate nel mio computer.

Quando creo una nuova applicazione, è ansible specificare che voglio usare la versione precedente (2.1.0)?

Ho trovato qui un’opzione non documentata per creare una nuova applicazione utilizzando una versione precedente di Rails.

rails _2.1.0_ new myapp 

Ecco il comando che uso normalmente:

 rails _version_ new application_name 

per esempio rails _2.1.0_ new my_app

Ecco l’elenco di tutte le versioni di rail disponibili finora:

http://rubygems.org/gems/rails/versions

Ho avuto qualche problema nell’utilizzare le rails _version_ new application_name (il progetto risultante è stato comunque generato per la versione più recente di Rails installata).

Dopo un po ‘di ricerche ho trovato un articolo di Michael Trojanek con un approccio alternativo. Questo funziona creando una cartella con un Gemfile che specifica la versione desiderata di Rails e quindi usando le bundle exec rails... modo che Bundler si occupi di eseguire la versione appropriata di rails . ad es. per realizzare un nuovo progetto Rails 4.2.9 i passaggi sono:

 mkdir myapp cd myapp echo "source 'https://rubygems.org'" > Gemfile echo "gem 'rails', '4.2.9'" >> Gemfile bundle install bundle exec rails new . --force --skip-bundle bundle update 

Puoi generare lo scheletro con entrambe le versioni e richiedere quello che vuoi in config/environment.rb :

 # Specifies gem version of Rails to use when vendor/rails is not present RAILS_GEM_VERSION = '2.1.2' unless defined? RAILS_GEM_VERSION 

oppure usa il comando “rotaie” dalla versione che vuoi comunque.

Dovresti anche dare un’occhiata al “congelamento” delle tue gemme Rails nell’app. Questo aiuta molto con l’implementazione, specialmente negli ambienti di hosting condiviso.

Basta cambiare la variabile RAILS_GEM_VERSION in config/environment.rb e rilasciare l’attività freeze rake:

 rake rails:freeze:gems