Szyny na pasażera nie rozpoznającego RVM

Przeniosłem do ree używając rvm przez:

rvm use ree@mygemset

I zainstalowany Kaminari gem poprzez Gemfile i bundle install.

Ale wydaje się, że Phusion nadal szuka klejnotu w domyślnym katalogu systemu. Pisze:

Error message:
    Could not find kaminari-0.10.4 in any of the sources (Bundler::GemNotFound)
Co mi umyka? Rails potrzebuje konkretnej konfiguracji, aby rozpoznać aktualną wersję ruby i gemset, którego używam??
Author: Michelle Tilley, 2011-03-15

4 answers

Musisz poinstruować pasażera, aby załadował RVM, a następnie skonfigurował środowisko dla gemsetu. Najprostszy sposób na to polega na trzech krokach:

  1. Utwórz plik .rvmrc : w katalogu głównym Twojego projektu rails Utwórz plik o nazwie .rvmrc, który zawiera polecenie RVM, którego użyjesz do załadowania gemsetu. Na przykład:

    rvm use ree@gemset
    
  2. Zaufaj plikowi .rvmrc : po wdrożeniu nowego pliku .rvmrc na serwerze Zmień katalogi do twojego projektu rails. RVM powinien zapytać, czy chcesz zaufać swojemu pliku .rvmrc; po prostu postępuj zgodnie z instrukcjami i wpisz yes, gdy zostanie zapytany. Jeśli znak zachęty nie jest wyświetlany, użyj następującego polecenia, aby zaufać .rvmrc:

    rvm rvmrc trust
    

    Uwaga: Jeśli chcesz automatycznie zaufać wszystkim .rvmrcs, wystarczy dodać:

    rvm_trust_rvmrcs_flag=1
    

    Do Twojego osobistego lub systemowego rvmrc (~/.rvmrc i /etc/rvmrc, odpowiednio).

  3. Poleć pasażerowi skonfigurowanie RVM environment : poinstruuj pasażera, aby załadował RVM i użył gemsetu w swoim pliku .rvmrc, tworząc nowy plik w katalogu Rails config o nazwie setup_load_paths.rb (więc config/setup_load_paths.rb W sumie). Plik powinien zawierać zawartość 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'
    

    Teraz po ponownym uruchomieniu aplikacji (touch tmp/restart.txt) powinieneś być gotowy do pracy.

Powinieneś zauważyć, że pasażer może uruchamiać tylko jedną wersję Ruby na raz; jeśli pasażer został skonfigurowany pod czymś innym niż ree, prawdopodobnie będziesz musiał ponownie zainstalować pasażera i / lub ponownie skrypt wrapper generuje.

 31
Author: Michelle Tilley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-21 11:57:42

Tylko dodatkowa uwaga do kroku 3 z oznaczonego (Broandon ' S) odpowiedzi, ponieważ nie udało mi się uruchomić Pasażera3 używając tych kodów.

Komunikat o błędzie jest następujący:

*** Phusion Passenger: no passenger_native_support.bundle found for the current Ruby interpreter. Compiling one...
# mkdir -p /Users/jerry/.rvm/gems/ruby-1.9.3-p194@xxx/gems/passenger-3.0.18/ext/ruby/ruby-1.9.3-x86_64-macosx
# cd /Users/jerry/.rvm/gems/ruby-1.9.3-p194@xxx/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'.

Odnosząc się do komunikatu "nie można zlokalizować ścieżki RVM", sprawdziłem dokumentację RVM https://rvm.io/integration/passenger/

Edycja config / setup_load_paths.rb do tego:

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'
Problem rozwiązany!
 2
Author: Jinzhao Huo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-28 05:56:32

Podążałem za sugerowaną odpowiedzią i przesunęła mnie do przodu, ale potem dostałem komunikat o błędzie:

RVM-integracja z Rubim została wyodrębniona do oddzielnego gem, powinna być zainstalowana domyślnie > z RVM, usuń linię $LOAD_PATH.unshift i wszystko powinno być znowu w porządku. Odwiedź https://rvm.io/integration/passenger Po Więcej Szczegółów. (RuntimeError)

Pasażer ma teraz klejnot. Moim błędem było nie instalowanie go w wersji ruby i gemset używałem. Kiedyś to zrobiłem. - wszystko działało słodko.
 1
Author: user2485629,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-04 21:11:07

Usuń plik config/setup_load_paths.rb dla pasażera 4. To nie jest potrzebne.

 0
Author: Greg Benedict,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-02 15:03:18