【问题标题】:Hosting Help- Custom Gems on DreamHost托管帮助 - DreamHost 上的自定义宝石
【发布时间】:2009-09-09 22:43:56
【问题描述】:

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

我的应用程序需要两个自定义 gem 'amazon-ecs' 和 'nokogiri'。根据 DreamHost wiki (http://wiki.dreamhost.com/Freezing_Gems) 上的说明,我通过将 gem 编码到我的配置文件 (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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      所以 /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"
      

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

        • 无法出售/冻结需要原生扩展的 Gem。在您的 DH 文件夹中设置您自己的本地 ruby​​gems 并更改路径以使用它。看我的回答。
        【解决方案4】:

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

        似乎进行了一些更改 到您的服务器和大多数 系统安装的 ruby​​gems 不是 像他们应该有的那样重新安装 到过。我手动安装了 sqlite3 宝石为您服务,但我们的管理员负责处理 这将不得不看看这个 弄清楚为什么他们没有 安装。如果你还有几个 你看到不工作我可以看看 可能将它们安装为停止 间隔时间。

        您可能会受到同样的影响。尝试联系支持人员以了解情况。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-01
          • 2019-09-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多