Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在任何源中都找不到计时器-1.1.0(Bundler::GemNotFound)_Ruby On Rails_Rvm_Capistrano_Passenger - Fatal编程技术网

Ruby on rails 在任何源中都找不到计时器-1.1.0(Bundler::GemNotFound)

Ruby on rails 在任何源中都找不到计时器-1.1.0(Bundler::GemNotFound),ruby-on-rails,rvm,capistrano,passenger,Ruby On Rails,Rvm,Capistrano,Passenger,Phusion乘客抛出以下错误: Could not find timers-1.1.0 in any of the sources (Bundler::GemNotFound) 我真的不确定这个timers-1.1.0 gem是什么,但我确实有一个名为sidekiq的gem,当我阅读Gemfile.lock时,我确实注意到sidekiq依赖于Cellulaic,Cellulaid依赖于计时器(我的Gemfile包括sidekiq,但不包括其他两个): 我有一个工作正常的生产服务器,现在我部署

Phusion乘客抛出以下错误:

Could not find timers-1.1.0 in any of the sources (Bundler::GemNotFound)
我真的不确定这个timers-1.1.0 gem是什么,但我确实有一个名为sidekiq的gem,当我阅读Gemfile.lock时,我确实注意到sidekiq依赖于Cellulaic,Cellulaid依赖于计时器(我的Gemfile包括sidekiq,但不包括其他两个):

我有一个工作正常的生产服务器,现在我部署了我的第一个登台服务器(与生产服务器不同的ip和git分支)。暂存分支与github上的主分支相同

登台服务器似乎缺少生产服务器拥有的计时器-1.1.0。这才是我真正困惑的地方。我正在使用RVM。我的capistrano任务包括以下内容:

set :rvm_type, :system
before "deploy", "deploy:create_gemset"

namespace :deploy do
  desc "Create the gemset"
  task :create_gemset do
    run "rvm #{rvm_ruby_string} --create"
  end

 desc "Install the bundle"
  task :bundle do
    run "bundle install --gemfile #{release_path}/Gemfile --without development test"
  end
end
所以我假设,当我第一次部署staging时,它将创建一个gemset for staging服务器,镜像生产服务器的gemset,并运行bundle安装,以确保staging上的新gemset拥有生产服务器的所有gems。但显然这并没有发生

我比较了两台服务器:

生产服务器:

$ rvm -v
rvm 1.17.3 (stable)

$ rvm list    
rvm rubies
=* ruby-1.9.3-p327 [ x86_64 ]
# => - current
# =* - current && default
#  * - default

$ rvm info | grep gem
    gem:          "/usr/local/rvm/gems/ruby-1.9.3-p327"
    gem:          "/usr/local/rvm/rubies/ruby-1.9.3-p327/bin/gem"
    rake:         "/usr/local/rvm/gems/ruby-1.9.3-p327@global/bin/rake"
    PATH:         "/usr/local/rvm/gems/ruby-1.9.3-p327/bin:/usr/local/rvm/gems/ruby-1.9.3-p327@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p327/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
    GEM_HOME:     "/usr/local/rvm/gems/ruby-1.9.3-p327"
    GEM_PATH:     "/usr/local/rvm/gems/ruby-1.9.3-p327:/usr/local/rvm/gems/ruby-1.9.3-p327@global"
    gemset:       ""
临时服务器:

$ rvm -v    
rvm 1.21.2 (stable)

$ rvm list    
rvm rubies
   ruby-1.9.3-p0 [ x86_64 ]
   ruby-1.9.3-p194 [ x86_64 ]
=* ruby-1.9.3-p392 [ x86_64 ]
   ruby-1.9.3-p429 [ x86_64 ]
   ruby-2.0.0-p0 [ x86_64 ]
# => - current
# =* - current && default
#  * - default

   $ rvm info | grep gem
    gem:          "/usr/local/rvm/gems/ruby-1.9.3-p392"
    gem:          "/usr/local/rvm/rubies/ruby-1.9.3-p392/bin/gem"
    rake:         "/usr/local/rvm/gems/ruby-1.9.3-p392/bin/rake"
    PATH:         "/usr/local/rvm/gems/ruby-1.9.3-p392/bin:/usr/local/rvm/gems/ruby-1.9.3-p392@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p392/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/myuser/bin"
    GEM_HOME:     "/usr/local/rvm/gems/ruby-1.9.3-p392"
    GEM_PATH:     "/usr/local/rvm/gems/ruby-1.9.3-p392:/usr/local/rvm/gems/ruby-1.9.3-p392@global"
    gemset:       ""

    $ rvm gemset list
    gemsets for ruby-1.9.3-p429 (found in /usr/local/rvm/gems/ruby-1.9.3-p429)
    (default)
    global
    spree_ecommerce
    => MySite

    $ rvm gemdir
   /usr/local/rvm/gems/ruby-1.9.3-p429@MySite

    cd /usr/local/rvm/gems/ruby-1.9.3-p429@MySite
    $ cd gems
    $ ls -l | grep timers                                    
    drwxrwsr-x  4 myuser rvm 4096 Jul 24  2013 timers-1.1.0

    rvm use ruby-1.9.3-p429 --default
    rvm-prompt
    Using /usr/local/rvm/gems/ruby-1.9.3-p429
注意,我还尝试在临时服务器上运行bundle安装

我注意到的一件事是Phusion乘客。我的生产服务器默认ruby版本和乘客配置相同:

$ rvm-prompt
ruby-1.9.3-p327

$ cat passenger.conf
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p327/gems/passenger-3.0.18
PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p327/ruby

$ cat passenger.load
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p327/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
但临时服务器不同:

$ rvm-prompt
ruby-1.9.3-p429

$ cat passenger.conf
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12

$ cat passenger.load
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/ext/apache2/mod_passenger.so

也许乘客在舞台上看到了错误的ruby和gemset?

以防万一,这确实是phusion乘客的错。它使用了错误的ruby版本和ruby gems。它使用的ruby/gems版本中没有安装计时器gem。解决方案是更改apache配置文件以更新passenger以使用正确的ruby/gems:

$ cd /etc/apache2/mods-available
$ sudo vim passenger.conf
<IfModule mod_passenger.c>
 PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p429@MySite/gems/passenger-4.0.41
 PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-1.9.3-p429@MySite/ruby
</IfModule>

$ sudo vim passenger.load
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p429@MySite/gems/passenger-4.0.41/buildout/apache2/mod_passenger.so
$ sudo a2enmod passenger
$ sudo /etc/init.d/apache2 restart
$cd/etc/apache2/mods可用
$sudo vim passenger.conf
PassengerRoot/usr/local/rvm/gems/ruby-1.9.3-p429@MySite/gems/乘客-4.0.41
PassengerDefaultRuby/usr/local/rvm/wrappers/ruby-1.9.3-p429@MySite/红宝石
$sudo vim乘客舱
LoadModule乘客舱/usr/local/rvm/gems/ruby-1.9.3-p429@MySite/gems/passenger-4.0.41/buildout/apache2/mod_passenger.so
$sudo a2enmod乘客
$sudo/etc/init.d/apache2重新启动
还要确保乘客gem确实安装在应用程序使用的ruby/gems版本中

$ cd /etc/apache2/mods-available
$ sudo vim passenger.conf
<IfModule mod_passenger.c>
 PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p429@MySite/gems/passenger-4.0.41
 PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-1.9.3-p429@MySite/ruby
</IfModule>

$ sudo vim passenger.load
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p429@MySite/gems/passenger-4.0.41/buildout/apache2/mod_passenger.so
$ sudo a2enmod passenger
$ sudo /etc/init.d/apache2 restart