2

我正在尝试使用Passenger 将RoR 应用程序部署到我的DreamHost 托管帐户上,但无法启动和运行它。

我的应用程序需要两个自定义 gem 'amazon-ecs' 和 'nokogiri'。根据 DreamHost wiki ( http://wiki.dreamhost.com/Freezing_Gems ) 上的说明,我通过将宝石编码到我的配置文件 (config.gem "nokogiri") 中将宝石冻结给供应商,然后使用 rake gems:unpack命令将它们构建到供应商中。

然后我使用 rake rails:freeze:gems 冻结了 rails gem,并将其上传到我的子域。

我的回溯的最后七行如下:

0   /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb   336     in `abort'
1   /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb   336     in `check_gem_dependencies'
2   /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb   170     in `process'
3   /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb   113     in `send'
4   /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb   113     in `run'
5   ./config/environment.rb     9   
6   /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb     31  in `gem_original_require'
7   /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb     31  in `require'

我的配置文件如下所示:

RAILS_GEM_VERSION = '2.3.3' unless defined? RAILS_GEM_VERSION
require File.join(File.dirname(__FILE__), 'boot')

Rails::Initializer.run do |config|
config.gem "nokogiri"
config.gem "amazon-ecs"
config.time_zone = 'UTC'
end

我错过了宝石的一步吗?我在正确的轨道上吗?

4

4 回答 4

5

任何具有本机扩展的 gem 都不能与您的应用程序一起出售,而且很有可能在 DH 上,config.gem 也不会正常工作。您必须安装自己的 ruby​​gems 并让您的应用程序使用它。我建议看看这个:

http://railstips.org/2008/11/24/rubygems-yours-mine-and-ours

它对在 DH 上设置环境有很好的说明。我上周在服务器升级后不得不这样做,它仍然适用。

于 2009-09-17T18:36:06.613 回答
0

所以 /vendor/rails 和 /vendor/plugins/nokogiri 和 amazon-ecs 存在并且对你来说还不错吗?您可以再试一次,这次在配置中指定 gem 的确切版本,如下所示

config.gem "nokogiri", :version => "1.0"

或者如果 gem 在 Github 上

config.gem "tenderlove-nokogiri", :version => "1.0", :lib => "nokogiri", :source => "http://gems.github.com"

回溯看起来不是很有帮助,到底发生了什么?:-)

于 2009-09-15T14:50:00.583 回答
0

我最近部署的应用程序得到了相同的回溯(在乘客错误页面上)。事实证明,它无法找到我所依赖的宝石之一(config.gem)......尽管 rake gems 说它在那里([I] test-unit = 1.2.3)。

Dreamhost 支持建议我尝试冻结/解压缩我的宝石。那可能会起作用(找到我的其他任何被冻结的宝石都没有问题),但由于某种原因 rake gems:unpack 没有为我做任何事情,所以我最终只是评论了那个配置.gem 线,因为无论如何我在生产中都不需要它,而且那行得通!

因此,如果其他人收到此错误,则强烈表明未找到您的宝石之一。尝试一次注释掉您的 config.gem 行,直到它开始工作或给出不同的错误?

于 2009-09-16T22:49:14.020 回答
0

上周我在 DreamHost 上遇到了一个问题,我的 Rails 应用程序由于缺少 gem 而突然停止工作。我联系了支持人员,这是他们的回复:

看起来您的服务器进行了一些更改,并且大多数系统安装的 ruby​​gem 都没有像应有的那样重新安装。我为您手动安装了 sqlite3 gem,但处理此问题的管理员必须查看此内容以找出未安装它们的原因。如果您发现还有一些不起作用,我可以考虑将它们安装为临时的权宜之计。

你可能会受到同样的事情的影响。尝试联系支持以找出答案。

于 2010-02-03T21:31:39.337 回答