새 응용 프로그램을 작성할 때 사용할 레일 버전 지정


227

컴퓨터에 두 가지 버전의 레일 (2.1.0 및 2.2.2)이 설치되어 있습니다.

새 응용 프로그램을 만들 때 이전 (2.1.0) 버전을 사용하도록 지정할 수 있습니까?


답변:


503

내가 발견 여기 레일의 이전 버전을 사용하여 새 응용 프로그램을 만들 수있는 문서화되지 않은 옵션을 선택합니다.

rails _2.1.0_ new myapp 

1
Rails 2와 3에서 작동하므로 이것을 허용 된 답변으로 변경해야합니다. Rails 3이 설치되어 있고 Rails 2 앱을 원하면 Keltia의 답변이 더 이상 작동하지 않습니다.
피터 브라운

잘못된 설치 가진 레일 3가 실패 2.3.5 -이 모듈이 설치되어 그냥 맥 OS X 스노우 레오파드 (Snow Leopard)에서 테스트 : 레일 (3.0.5, 2.3.5, 2.2.2, 1.2.6)
마이크

13
이것은 Rails 기능이 아닌 RubyGems 기능입니다. 따라서 Rails 버전에 의존하지 않으며 다른 gem에서도 작동합니다. (감사합니다, 이것은 훌륭한 답변입니다!)
Calrion

2
3.1.3 및 3.2.0.rc1이 설치된 경우 3.1.3을 사용할 때 오류가 발생합니다. 오류는 다음과 같습니다 --- [ninad @ localhost devel] $ rails _3.1.3_new 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이 나왔으므로 매우 도움이되었습니다!
Jason

67

내가 정상적으로 사용하는 명령은 다음과 같습니다.

rails _version_ new application_name

예를 들어 rails _2.1.0_ new my_app

지금까지 사용 가능한 모든 레일 버전 목록은 다음과 같습니다.

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


26

사용 중에 문제 rails _version_ new application_name가 발생했습니다 (최신 버전의 Rails를 설치 한 결과 프로젝트가 생성되었습니다.)

약간의 파고 후에 나는 Michael Trojanek 의 다른 접근법으로 기사 를 찾았 습니다 . 이것은 원하는 Rails 버전을 지정하는 Gemfile로 폴더를 생성 한 다음 Bundler가 적절한 버전의 실행을 처리하도록 사용하여 작동합니다 . 예를 들어 새로운 Rails 4.2.9 프로젝트를 만들려면 다음 단계를 따르십시오.bundle exec rails...rails

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레일도 업데이트됩니다!
Rajkaran Mishra

bundle update수동 업데이트를 사용 중이므로 @devel 이 필요합니다 ( --skip-bundle). Gemfile에 특정 버전 (예 : 4.2.9)이 지정되어 레일이 업그레이드되지 않습니다.
mikej

--force는 Gemfile을 덮어 쓰고 있습니다
Rajkaran Mishra

그러나, 새로운 Gemfile은 여전히 우리가 원하는 Rails bundle exec rails new...의 버전을 rails지정합니다 (Gemfile 에 지정된 버전을 교체 했기 때문에 ).
mikej

1
나는 Gemfile에서 --force 옵션으로 gem 'rails', '5.0.0.1' >> Gemfile실행 한 후에 . 이제 실행 하면 레일이 5.0.4 (Gemfile.lock에서)로 업데이트되지만 레일 버전 5.0.0.1을 사용할 것으로 예상되었습니다.bundle exec rails newgem 'rails', '~> 5.0.0', '>= 5.0.0.1'bundle update
Rajkaran Mishra

9

Rails 5.0.0 이상에 대해 @mikej가 올바르게 지적했듯이 다음 단계를 수행해야합니다.

원하는 Rails 버전을 지정하고 번 들러가 종속 gem을 설치할 수 있도록 Gemfile과 함께 애플리케이션 디렉토리를 만듭니다.

$ mkdir myapp
$ cd myapp
$ echo "source 'https://rubygems.org'" > Gemfile
$ echo "gem 'rails', '5.0.0.1'" >> Gemfile
$ bundle install

올바른 버전의 레일이 설치되어 있는지 확인하십시오. $ bundle exec rails -v

이제 애플리케이션을 생성하고 Rails가 새 Gemfile을 생성하도록하거나 --force플래그 를 사용하여 기존 Gemfile을 덮어 쓰도록 하고 번들 ( --skip-bundle) 을 설치하는 대신 수동으로 업데이트하십시오.

$ bundle exec rails new . --force --skip-bundle

의 레일 항목을 확인하면 다음 Gemfile과 같아야합니다.

gem 'rails', '~> 5.0.0', '>= 5.0.0.1'

응용 프로그램에 필요한 정확한 버전으로 업데이트해야합니다.

gem 'rails', '5.0.0.1'

이제 마지막 단계 :

$ bundle update

3

어느 버전 으로든 스켈레톤을 생성 할 수 있으며 원하는 버전이 필요할 수 있습니다 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

또는 원하는 버전의 "rails"명령을 사용하십시오.


3

또한 Rails 보석을 앱에 "고정"시키는 것도 살펴보십시오. 이는 특히 공유 호스팅 환경에서의 배포에 많은 도움이됩니다.

RAILS_GEM_VERSION변수를 변경하고 config/environment.rb동결 레이크 작업을 실행하십시오.

rake rails:freeze:gems

사용 rvm 사용 rubyversion
Apoorv

1

이를 달성하는 두 가지 방법이 있습니다.

허용 된 답변에서 제안 된 것과 같이 :

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

다른 방법은 레일 프로젝트를 초기화하기 전에 원하는 레일 버전으로 gemfile을 만드는 것입니다

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

나는 내 기사 에서 이것에 대해 자세히 썼다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.