Yanıtlar:
Burada , Rails'in eski bir sürümünü kullanarak yeni bir uygulama oluşturmak için belgesiz bir seçenek buldum .
rails _2.1.0_ new myapp
_3.1.3_
yeni sample_app /home/ninad/.rbenv/versions/1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb:314:in bin_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> '
İşte normalde kullandığım komut:
rails _version_ new application_name
Örneğin rails _2.1.0_ new my_app
Şimdiye kadar mevcut tüm ray sürümlerinin listesi:
Kullanırken bazı sorunlar yaşıyordum rails _version_ new application_name
(sonuçta ortaya çıkan proje hala Rails'in en yeni sürümü için oluşturuldu.)
Kazma biraz sonra buldum bir makale ile Michael Trojanek alternatif bir yaklaşım ile. Bu, Rails'in istenen sürümünü belirten bir Gemfile ile bir klasör oluşturarak ve sonra bundle exec rails...
Bundler'ın uygun sürümünü çalıştırmaya özen göstererek çalışır rails
. örneğin yeni bir Rails 4.2.9 projesi yapmak için adımlar şunlardır:
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
bundle update
, rayları da güncelleyecek !!
bundle update
manuel güncelleme kullanıldığı için gereklidir ( --skip-bundle
). Gemfile'da belirli bir sürüm belirtildiği için raylar yükseltilmeyecek (örnekte 4.2.9.)
--force
Gemfile
bundle exec rails new...
sürümün rails
yerini aldı.)
gem 'rails', '5.0.0.1' >> Gemfile
ve çalıştırdıktan sonra bundle exec rails new
onun, --force seçeneği ile gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
Gemfile içinde. Şimdi çalıştırdığımda bundle update
, rayları 5.0.4'e (Gemfile.lock'ta) güncelliyor, ancak rayların 5.0.0.1 sürümünü kullanmayı bekliyordum
Mikej tarafından Rails 5.0.0 veya üstü için doğru bir şekilde belirtildiği gibi , şu adımları izlemelisiniz :
İstediğiniz Rails sürümünü belirtmek için bir Gemfile ile birlikte uygulamanız için bir dizin oluşturun ve bundler'ın bağımlı mücevherleri yüklemesine izin verin:
$ mkdir myapp
$ cd myapp
$ echo "source 'https://rubygems.org'" > Gemfile
$ echo "gem 'rails', '5.0.0.1'" >> Gemfile
$ bundle install
Rayların doğru sürümünün kurulu olduğunu kontrol edin: $ bundle exec rails -v
Şimdi uygulamanızı oluşturun, Rails'in yeni bir Gemfile oluşturmasına (veya --force
bayrağı kullanarak mevcut olanın üzerine yazmasına ) izin verin ve paketi ( --skip-bundle
) manuel olarak güncellemek yerine:
$ bundle exec rails new . --force --skip-bundle
Girişi raylar için kontrol ederseniz Gemfile
, bunun gibi olması gerekir:
gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
Uygulama için gereken tam sürüme güncellemelisiniz:
gem 'rails', '5.0.0.1'
Şimdi, son adım:
$ bundle update
Her iki versiyonla da iskeleti oluşturabilir ve istediğiniz iskeleti isteyebilirsiniz 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
veya zaten istediğiniz sürümden "rails" komutunu kullanın.
Ayrıca app içine Raylar taşlar "dondurma" bir göz atın. Bu, özellikle paylaşılan barındırma ortamlarında dağıtımda çok yardımcı olur.
RAILS_GEM_VERSION
Değişkeni değiştirin config/environment.rb
ve dondurma komisyonu görevini verin:
rake rails:freeze:gems
Bunu başarmanın iki yolu vardır:
biri kabul edilen cevapta önerildiği gibi:
gem install rails -v 2.1.0 #only when the gem has not been installed in the desired ruby version you are using, so that you don't get error on next step
rails _2.1.0_ new my_app
ve alternatif yöntem raylar projesini başlatmadan önce istenen ray versiyonuyla gemfile oluşturmaktır
mkdir my_app
cd my_app
echo "source 'https://rubygems.org'" > Gemfile
echo "gem 'rails', '2.1.0'" >> Gemfile
bundle install
bundle exec rails new . --force --skip-bundle
Bu konuyu makalemde ayrıntılı olarak yazdım