我正在使用带有 Ruby 1.9.3-p327 的 Rails 3.2.9。
在我的服务器上部署“capistrano”后,我无法初始化我的 Rails 应用程序,因为它会导致导致 Rails 和 Ruby 解释器崩溃的错误。
如果没有任何明确的错误消息,我必须依赖回溯、控制帧和内存转储。所以很难调试并找出错误来自哪里。在这里发布太长了。
在部署期间,我必须在我的config/application.rb文件中进行设置,以使 deploy:asset:precompile 任务通过,否则我会陷入 ruby 崩溃:
config.assets.initialize_on_precompile = false
部署后,我只运行了一个 rake db:reset 来测试从我的应用程序对数据库的访问,但这会导致崩溃,所以我测试了从控制台和“newly-Rails-app-directly-created-on”对我的数据库的访问-服务器”。这方面一切正常(创建数据库,并授予访问权限)。所以我排除了来自 database.yml 或 postgres 数据库设置的任何问题。
此外,经过很长时间的搜索(我在这个问题上花了整整一周时间),我设法找到问题来自 Rails 初始化。
更具体地说,我的 config/application.rb 中的这些行导致 Rails 和 Ruby 崩溃。
if defined?(Bundler)
# If you precompile assets before deploying to production, use this line
Bundler.require(*Rails.groups(:assets => %w(development test)))
# If you want your assets lazily compiled in production, use this line
# Bundler.require(:default, :assets, Rails.env)
end
我尝试了这两个选项,它们都使应用程序崩溃。我也尝试对它们发表评论,但在 Rails 读取 application.rb 之后,其他一些东西也会使 Rails 和 Ruby 崩溃。
我怀疑某些东西与捆绑器和 gem 资产管道有关。如果我运行gem list命令,我可以看到捆绑器安装在我的服务器上,有几个版本:
bundler (1.2.1, 1.1.4, 1.1.3)
如果我运行 rvm gemset 列表,我会看到默认 gemset 正在使用中,并且没有任何其他:
gemset for ruby-1.9.3-p327 (found in /usr/local/rvm/ruby-1.9.3-p327
=> (default)
global
我不知道如何确保 Rake/Rails 正在使用这个 gemset 和这个版本的 ruby ?
此外,如果我以 root 身份连接;bundle install将导致以下错误:
ERROR: Gem bundler is not installed, run `gem install bundler` first
如果以用户身份连接,它将起作用。
请注意,rvm 已使用“sudo”作为系统范围安装。
我的其他 gem 由 bundler 管理并存储到: /var/www/opf/shared/bundle/ruby/
我的宝石文件:
source 'https://rubygems.org'
gem 'rails', '~>3.2'
gem 'pg', '>= 0.14'
gem 'haml-rails', '~> 0.3'
group :developpement do
gem 'rspec-rails', '>= 2.11'
gem 'capistrano', '>= 2.12'
gem 'faker', '>= 1.0'
gem 'rvm-capistrano'
end
group :test do
gem 'rspec', '>= 2.11'
gem 'webrat', '>= 0.7'
gem 'spork-rails', '>= 3.2'
gem 'factory_girl_rails', '>= 4.0'
end
group :assets do
gem 'sass-rails', '>= 3.2.3'
gem 'coffee-rails', '>= 3.2.1'
gem 'compass-rails', '>= 1.0'
gem 'execjs'
gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
gem 'annotate'
gem 'excel_rails', '~> 0.3'
gem 'spreadsheet', '~> 0.7'
gem 'schema_plus', '~> 0.4'
gem 'ar-octopus', '~> 0.3'
gem 'squeel', '~> 1.0'
gem 'devise', '~> 2.1'
gem 'role_model'
gem 'declarative_authorization'
gem 'rails-translate-routes', '~> 0.1'