在DreamHost上托管帮助 - 自定义宝石

时间:2009-09-09 22:43:56

标签: ruby-on-rails hosting rubygems passenger dreamhost

我正在尝试使用Passenger将RoR应用部署到我的DreamHost主机帐户,但是无法启动并运行。

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

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

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

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 个答案:

答案 0 :(得分:5)

任何具有原生扩展名的宝石都无法与您的应用程序一起出售,并且有一个很好的选择,在DH上,config.gem也无法正常工作。您必须安装自己的rubygems并让您的应用程序使用它。我建议看看这个:

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

它有关于在DH上设置环境的很好的说明。我上次在服务器升级后必须这样做,它仍然适用。

答案 1 :(得分:0)

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

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

或者宝石是否在Github上

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

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

答案 2 :(得分:0)

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

Dreamhost支持建议我尝试冻结/解压缩我的宝石。这可能会有用(找到我的其他任何宝石都没有问题,但是由于某种原因,rake gems:unpack没有为我做任何事情,所以我最后只是评论出来的配置.gem line,因为我无论如何都不需要它在制作中,这很有效!

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

答案 3 :(得分:0)

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

  

看起来有些变化   到您的服务器和大多数   系统安装的rubygems不是   像他们应该的那样重新安装   是。我手动安装了sqlite3   宝石为你,但我们的管理员谁处理   这将不得不看一看   弄清楚他们为什么不是   安装。如果你还有更多   你看到不工作,我可以看看   可能将它们安装为停止   同时存在差距。

你有可能受到同样的事情的影响。尝试联系支持人员以了解相关信息。