问题
I'm running a rails 4 app on apache/passenger/ubuntu. The app runs fine when I comment out the config_serve.static.assets line in config/environments/production.rb, like this:
# Disable Rails's static asset server (Apache or NGINX will already do this).
# config.serve_static_assets = false
Although it works, commenting out this line seems to be a bad idea, as I've read that the default value of the config variable is true, and it's supposed to be set to false when you're running an app behind apache or nginx. However, when I uncomment the line, the app doesn't start and I get the following error in the apache error log:
[Client 20] Cannot checkout session because a spawning error occurred. The identifier of the error is 108162e2. Please see earlier logs for details about the error.
App 10751 stdout:
App 10751 stderr: --> Compiling passenger_native_support.so for the current Ruby interpreter...
App 10751 stderr:
App 10751 stderr: (set PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY=0 to disable)
App 10751 stderr:
App 10751 stderr: --> Downloading precompiled passenger_native_support.so for the current Ruby interpreter...
App 10751 stderr:
App 10751 stderr: (set PASSENGER_DOWNLOAD_NATIVE_SUPPORT_BINARY=0 to disable)
App 10751 stderr:
App 10751 stderr: # tar xzf rubyext-ruby-2.1.3-x86_64-linux.tar.gz
App 10751 stderr: # rm -f rubyext-ruby-2.1.3-x86_64-linux.tar.gz
App 10751 stderr: Checking whether downloaded binary is usable...
App 10751 stderr: # /usr/local/bin/ruby -I. test.rb
App 10751 stderr: /usr/local/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': libruby.so.2.1: cannot open shared object file: No such file or directory - /tmp/passenger-native-support-j3v7kx/passenger_native_support.so (LoadError)
App 10751 stderr: from /usr/local/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
App 10751 stderr: from test.rb:2:in `<main>'
App 10751 stderr: Binary is not usable.
App 10751 stderr: --> Continuing without passenger_native_support.so.
App 10751 stdout:
[ 2015-01-21 10:13:18.0841 10166/7fce0acf9700 Pool2/Implementation.cpp:287 ]: Could not spawn process for application /home/DFM: An error occured while starting up the preloader.
Error ID: 4b40f65d
Error details saved to: /tmp/passenger-error-tH49HR.html
Message from application: undefined local variable or method `false ' for #<Dfm::Application:0x007f4afb293b30> (NameError)
/home/DFM/config/environments/production.rb:24:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.1.0/gems/railties-4.2.0.rc2/lib/rails/railtie.rb:210:in `instance_eval'
/usr/local/lib/ruby/gems/2.1.0/gems/railties-4.2.0.rc2/lib/rails/railtie.rb:210:in `configure'
/home/DFM/config/environments/production.rb:1:in `<top (required)>'
So my questions are (1) is it a problem to run the app with the config variable commented out (and therefore defaulting to true), and (2) if it is a problem, how to fix it?
回答1:
- It's not recommended but it's probably only a performance problem.
The important error message there is hidden amongst a bunch of Passenger warnings:
Message from application: undefined local variable or method `false ' for #<Dfm::Application:0x007f4afb293b30> (NameError) /home/DFM/config/environments/production.rb:24:in `block in <top (required)>'
I'm sure you've fixed this by now, but future Passenger users who come across this page might be distracted as you and I were by the warnings relating to Passenger Native Support, which are not relevant to the error itself.
来源:https://stackoverflow.com/questions/28071214/passenger-phusion-spawning-error-with-rails-app