在部署时找不到 rake-11.3.0(Capistrano Nginx Passenger)

问题描述 投票:0回答:2
  • 最近将旧的 Web 应用程序更新到 Rails 4.2.7.1 和 Ruby 2.3.1(它与 Rails 3 和 Ruby 1.9 一起使用)。
  • 使用 rvm 在生产环境中的 nginx-passenger 服务器上运行应用程序。
  • 更新了生产中的RVM和ruby,并将新的ruby版本设置为 默认。
  • 与 Capistrano 一起部署。

应用程序无法运行,来自 nginx 日志:

[ 2016-12-01 07:00:34.0368 1509/7fbcbf7fe700 agents/HelperAgent/RequestHandler.h:2306 ]: [Client 20] Cannot checkout session because a spawning$
App 6899 stdout:
App 6899 stdout:
[ 2016-12-01 07:01:13.2625 1509/7fbccdf3b700 Pool2/Implementation.cpp:287 ]: Could not spawn process for application /home/deploy/porinstinto/c$
  Error ID: 9864a1e8
  Error details saved to: /tmp/passenger-error-NDJl0Z.html
  Message from application: <p>It looks like Bundler could not find a gem. Maybe you didn't install all the gems that this application needs. T$

  <pre class="commands">bundle install</pre>

<p>If that didn't work, then the problem is probably caused by your application being run under a different environment than it's supposed to. $

<ol>
  <li>Is this app supposed to be run as the <code>deploy</code> user?</li>
  <li>Is this app being run on the correct Ruby interpreter? Below you will
      see which Ruby interpreter Phusion Passenger attempted to use.</li>
  <li>Please check whether the correct RVM gemset is being used.</li>
  <li>Sometimes, RVM gemsets may be broken.
      <a href="https://github.com/phusion/passenger/wiki/Resetting-RVM-gemsets">Try resetting them.</a></li>
</ol>

<p>-------- The exception is as follows: -------</p>
Could not find rake-11.3.0 in any of the sources (Bundler::GemNotFound)
<pre>  /home/deploy/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/spec_set.rb:92:in `block in materialize&#39;
  /home/deploy/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/spec_set.rb:85:in `map!&#39;
  /home/deploy/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/spec_set.rb:85:in `materialize&#39;
  /home/deploy/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/definition.rb:132:in `specs&#39;
  /home/deploy/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/definition.rb:177:in `specs_for&#39;
  /home/deploy/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/definition.rb:166:in `requested_specs&#39;
  /home/deploy/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/environment.rb:18:in `requested_specs&#39;
  /home/deploy/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:13:in `setup&#39;
  /home/deploy/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler.rb:121:in `setup&#39;
  /home/deploy/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/setup.rb:17:in `&lt;top (required)&gt;&#39;
  /home/deploy/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:135:in `require&#39;
  /home/deploy/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require&#39;
  /home/deploy/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:144:in `require&#39;
  /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:263:in `block in run_load_path_setup_code&#39;
  /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:366:in `running_bundler&#39;
  /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:261:in `run_load_path_setup_code&#39;
  /usr/share/passenger/helper-scripts/rack-preloader.rb:100:in `preload_app&#39;
  /usr/share/passenger/helper-scripts/rack-preloader.rb:158:in `&lt;module:App&gt;&#39;
  /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `&lt;module:PhusionPassenger&gt;&#39;
  /usr/share/passenger/helper-scripts/rack-preloader.rb:28:in `&lt;main&gt;&#39;</pre>

[ 2016-12-01 07:01:13.2791 1509/7fbcbf7fe700 agents/HelperAgent/RequestHandler.h:2306 ]: [Client 20] Cannot checkout session because a spawning$

更新

  • 在生产服务器中运行“Bundle”我可以看到 rake-11.3.0 已安装。

  • 阅读有关宝石组的建议链接

  • 看来所有gem都安装在gemset 2.3.1@default中

  • 而且,阅读错误日志,该乘客正在使用 ruby-2.1.3@global gemset,它没有安装正确的 gems。

    现在,我必须更改乘客宝石集配置以使用正确的“默认”宝石集。有什么帮助吗?

ruby-on-rails ruby-on-rails-4 nginx passenger rvm-capistrano
2个回答
0
投票

尝试:

bundle exec rake 'option'

0
投票

问题已解决,这是 Nginx-passenger 配置的问题。

nginx.conf 文件指向 ruby 2.1.3(我使用的 ruby 的先前版本),所以我简单地将这一行替换为:

passenger_ruby /home/deploy/.rvm/wrappers/ruby-2.3.1/ruby;
© www.soinside.com 2019 - 2024. All rights reserved.