Mam dwie wersje szyn (2.1.0 i 2.2.2) zainstalowane na moim komputerze.
Czy podczas tworzenia nowej aplikacji można określić, że chcę używać starszej wersji (2.1.0)?
ruby-on-rails
hektorsq
źródło
źródło
Odpowiedzi:
Znalazłem tutaj nieudokumentowaną opcję tworzenia nowej aplikacji przy użyciu starszej wersji Railsów.
źródło
_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
<główny> 'Oto polecenie, którego normalnie używam:
na przykład
rails _2.1.0_ new my_app
Oto lista wszystkich dostępnych dotychczas wersji szyn:
http://rubygems.org/gems/rails/versions
źródło
Miałem problemy z używaniem
rails _version_ new application_name
(wynikowy projekt był nadal generowany dla najnowszej wersji zainstalowanej wersji Rails).Po trochę kopanie znalazłem artykuł przez Michaela Trojanek z alternatywnego podejścia. Działa to poprzez utworzenie folderu z Gemfile określającym pożądaną wersję Railsów, a następnie użycie go
bundle exec rails...
, aby Bundler zajął się uruchomieniem odpowiedniej wersjirails
. np. aby stworzyć nowe projekty Railsowe 4.2.9, kroki są następujące:źródło
bundle update
, zaktualizuje również szyny !!bundle update
jest potrzebny, ponieważ używana jest ręczna aktualizacja (--skip-bundle
). Szyny nie zostaną zaktualizowane, ponieważ określona wersja jest podana w Gemfile (w przykładzie 4.2.9.)--force
zastępuje Gemfilebundle exec rails new...
uruchomiłem wersjęrails
określoną w Gemfile, która kończy sięgem 'rails', '5.0.0.1' >> Gemfile
i po uruchomieniubundle exec rails new
z opcją --force jestgem 'rails', '~> 5.0.0', '>= 5.0.0.1'
w Gemfile. Teraz, kiedy uruchamiambundle update
, aktualizuję szyny do 5.0.4 (w Gemfile.lock), ale spodziewałem się, że będę używać szyn w wersji 5.0.0.1Jak słusznie zauważył @mikej dla Railsów 5.0.0 lub nowszych , powinieneś wykonać następujące kroki:
Utwórz katalog dla swojej aplikacji wraz z plikiem Gemfile, aby określić żądaną wersję Railsów i pozwól, aby bundler zainstalował zależne klejnoty:
Sprawdź, czy zainstalowano poprawną wersję szyn:
$ bundle exec rails -v
Teraz utwórz aplikację, pozwól Railsom utworzyć nowy plik Gem (lub raczej zastąp istniejący plik przy użyciu
--force
flagi) i zamiast instalować pakiet (--skip-bundle
) zaktualizuj go ręcznie:Jeśli
Gemfile
zaznaczysz wpis dla szyn w , powinno to wyglądać tak:Powinieneś zaktualizować go dokładnie do wersji wymaganej dla aplikacji:
Teraz ostatni krok:
źródło
Możesz wygenerować szkielet w dowolnej wersji i wymagać tego, który chcesz
config/environment.rb
:lub użyj polecenia „rails” z żądanej wersji.
źródło
Powinieneś także rzucić okiem na „zamrażanie” klejnotów Railsów w aplikacji. To bardzo pomaga we wdrożeniu, szczególnie w dzielonych środowiskach hostingowych.
Wystarczy zmienić
RAILS_GEM_VERSION
zmiennąconfig/environment.rb
i wykonać zadanie zamrażania prowizji:źródło
Istnieją dwa sposoby na osiągnięcie tego:
jeden zgodnie z sugerowaną odpowiedzią:
alternatywną metodą jest utworzenie pliku gem z pożądaną wersją szyn przed zainicjowaniem projektu szyn
Pisałem o tym szczegółowo w moim artykule
źródło