Yeni bir uygulama oluştururken kullanılacak ray sürümünü belirleme


Yanıtlar:


504

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 

1
Rails 2 ve 3 için çalıştığı için bunu kabul edilen cevaba çevirmelisiniz. Rails 3 yüklüyse ve Rails 2 uygulaması istiyorsanız Keltia'nın cevabı artık çalışmaz.
Peter Brown

Rails 3'ün kurulu olması 2.3.5 için başarısız olursa - Mac OS X Snow Leopard'da şu modüller kurulu olarak test edildi: raylar (3.0.5, 2.3.5, 2.2.2, 1.2.6)
Mike

13
Bu Rails işlevselliği değil RubyGems işlevidir; Bu nedenle Rails sürümüne bağlı değildir ve diğer taşlar için çalışır. (Teşekkürler, bu harika bir cevap!)
Calrion

2
3.1.3 ve 3.2.0.rc1 yüklendiğinde 3.1.3 kullanılırken hata alıyorum. İşte hata --- [ninad @ localhost devel] $ rails _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> '
Ninad

4.0.0 çıktı!
Jason


26

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

İhtiyacımız olduğunu düşünmüyorum bundle update, rayları da güncelleyecek !!
Rajkaran Mishra

@devel, bundle updatemanuel 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.)
mikej

--forceGemfile
Rajkaran Mishra

Evet, ancak yeni Gemfile yazılan hala istediğimiz Rails sürümünü belirtiyor (çünkü Gemfile'da belirtilen bundle exec rails new...sürümün railsyerini aldı.)
mikej

1
Ben yaptım gem 'rails', '5.0.0.1' >> Gemfileve çalıştırdıktan sonra bundle exec rails newonun, --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
Rajkaran Mishra

9

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 --forcebayrağı 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

3

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.


3

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_VERSIONDeğişkeni değiştirin config/environment.rbve dondurma komisyonu görevini verin:

rake rails:freeze:gems

Kullanım rvm kullanım rubyversion
Apoorv

1

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.