Рельсы на пассажире, не признающие RVM
Я переключился на ree, используя rvm:
rvm use [email protected]
и установил камень kaminari через Gemfile и установить пакет.
Но пассажир Phusion, похоже, все еще ищет драгоценный камень в системном каталоге по умолчанию. В нем говорится:
Error message:
Could not find kaminari-0.10.4 in any of the sources (Bundler::GemNotFound)
Что мне не хватает? Rails нуждается в какой-либо конкретной конфигурации для распознавания текущей версии ruby и gemset, которые я использую
Ответы
Ответ 1
Вам необходимо проинструктировать Пассажира загрузить RVM, а затем настроить среду для вашего gemset. Самый простой способ сделать это - три шага:
-
Создайте файл .rvmrc
. В корне вашего проекта rails создайте файл с именем .rvmrc
, который содержит команду RVM, которую вы будете использовать для загрузки своего gemset. Например:
rvm use [email protected]
-
Доверяйте файлу .rvmrc
. После того, как вы развернули новый файл .rvmrc
на свой сервер, смените каталоги на проект rails. RVM должен спросить вас, хотите ли вы доверять своему файлу .rvmrc
; просто следуйте инструкциям и введите yes
. Если приглашение не появляется, используйте следующую команду, чтобы доверять своему .rvmrc
:
rvm rvmrc trust
Примечание. Если вы хотите автоматически доверять всем .rvmrc
s, просто добавить:
rvm_trust_rvmrcs_flag=1
для вашего личного или системного rvmrc (~/.rvmrc
и /etc/rvmrc
, соответственно).
-
Поручить пассажиру настроить среду RVM. Попросите пассажира загрузить RVM и использовать gemset в вашем файле .rvmrc
, создав новый файл в каталоге Rails config
называется setup_load_paths.rb
(так что config/setup_load_paths.rb
во всех). Файл должен содержать содержимое https://gist.github.com/870310:
if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm')
begin
rvm_path = File.dirname(File.dirname(ENV['MY_RUBY_HOME']))
rvm_lib_path = File.join(rvm_path, 'lib')
$LOAD_PATH.unshift rvm_lib_path
require 'rvm'
RVM.use_from_path! File.dirname(File.dirname(__FILE__))
rescue LoadError
raise "RVM ruby lib is currently unavailable."
end
end
# This assumes Bundler 1.0+
ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__))
require 'bundler/setup'
Теперь, когда вы перезагружаете приложение (touch tmp/restart.txt
), вам должно быть хорошо идти.
Вы должны заметить, что Пассажир может запускать только одну версию Ruby за раз; если Пассажир был настроен под чем-то другим, кроме ree, вам, вероятно, придется переустановить Пассажир и/или повторить создавшуюся оболочку script.
Ответ 2
Просто добавьте примечание к шагу 3 ответа Отмечено (Broandon's), потому что я не получил свой Passenger3 и запустил его с помощью этих кодов.
Сообщение об ошибке выглядит следующим образом:
*** Phusion Passenger: no passenger_native_support.bundle found for the current Ruby interpreter. Compiling one...
# mkdir -p /Users/jerry/.rvm/gems/[email protected]/gems/passenger-3.0.18/ext/ruby/ruby-1.9.3-x86_64-macosx
# cd /Users/jerry/.rvm/gems/[email protected]/gems/passenger-3.0.18/ext/ruby/ruby-1.9.3-x86_64-macosx
Unable to locate the RVM path. Your RVM installation is probably too old. Please update it with 'rvm get head && rvm reload && rvm repair all'.
Ссылаясь на сообщение "Не удалось найти путь RVM", я проверил документацию RVM
https://rvm.io/integration/passenger/
Измените config/setup_load_paths.rb на это:
if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm')
begin
gems_path = ENV['MY_RUBY_HOME'].split(/@/)[0].sub(/rubies/,'gems')
ENV['GEM_PATH'] = "#{gems_path}:#{gems_path}@global"
require 'rvm'
RVM.use_from_path! File.dirname(File.dirname(__FILE__))
rescue LoadError
raise "RVM gem is currently unavailable."
end
end
# If you're not using Bundler at all, remove lines bellow
ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__))
require 'bundler/setup'
Проблема решена!
Ответ 3
Я последовал предложенному ответу, и он переместил меня вперед, но затем я получил сообщение об ошибке:
RVM - интеграция Ruby была извлечена в отдельный камень, он должен быть установлен по умолчанию > с RVM, удалить строку $LOAD_PATH.unshift
, и все должно быть хорошо. Подробнее см. https://rvm.io/integration/passenger. (RuntimeError)
Теперь у пассажира есть драгоценный камень. Моя ошибка не была установлена в рубиновой версии и gemset, которые я использовал. Как только я это сделал - все работало сладко.
Ответ 4
Удалите файл config/setup_load_paths.rb
для Passenger 4. Это не нужно.