【问题标题】:rvm and bundler - problem with RedCloth gem and rakervm 和 bundler - RedCloth gem 和 rake 的问题
【发布时间】:2011-04-08 14:46:32
【问题描述】:

我设置了一个本地项目以使用 rvm,并使用特定于项目的 gemset,并执行“捆绑包”以将我所有的 gem 放入供应商/缓存中。然后我把它全部检查到源代码管理中。

现在,在服务器上,我安装了 rvm(相同的 ruby​​ - ruby​​-1.8.7-p302)并再次制作了 gemset。我检查了项目文件夹,将其放入其中(此时我在正确的 rvm 和 gemset 中)。我以为我可以从供应商/缓存中的 gem 进行“捆绑安装”安装。但 RedCloth 宝石正在倒塌:

Using rake (0.8.7) 
Installing RedCloth (4.2.3) with native extensions 
/opt/ruby-enterprise-1.8.7-2011.01/lib/ruby/site_ruby/1.8/rubygems/installer.rb:529:in
`build_extensions': ERROR: Failed to build gem native extension. 
(Gem::Installer::ExtensionBuildError)

        /opt/ruby-enterprise-1.8.7-2011.01/bin/ruby extconf.rb 

Gem files will remain installed in 
/home/deploy/.rvm/gems/ruby-1.8.7-p302@akrotoski/gems/RedCloth-4.2.3 for inspection.

到目前为止,这是我所拥有的“宝石清单”:

*** LOCAL GEMS ***

bundler (1.0.11)
rake (0.8.7)
RedCloth (4.2.7)

这很奇怪 - 尽管它在尝试构建 RedCloth 时失败了,但它认为它已安装。

同样奇怪的是,错误消息指的是 ruby​​ 的“系统”版本,而不是当前 rvm 的版本。当前的rvm肯定是激活的:

rvm list
>> rvm rubies
>> => ruby-1.8.7-p302 [ x86_64 ]

which ruby
>> /home/deploy/.rvm/rubies/ruby-1.8.7-p302/bin/ruby

which gem
>> /home/deploy/.rvm/rubies/ruby-1.8.7-p302/bin/gem

此时我很困惑...一个潜在的问题可能是在我的本地机器(32 位)中我有 ruby​​-1.8.7-p302 的 i386 版本,而在我的服务器上我有x86_64 版本 - 这会导致这个问题吗?

感谢任何建议 - 最大

【问题讨论】:

    标签: ruby rubygems gem rvm bundler


    【解决方案1】:

    第一步:使用 bundler 供应所有内容

    以防万一这里有一篇关于如何vendor everything 的优秀博客文章(这意味着不使用 gemsets)。我指出这一点是因为在我看来,您的环境中存在捆绑器和 gemset 的危险混合物。如果您出售所有东西(最安全的),则不需要 gemset....

    第 2 步:在项目的根目录中包含 .rvmrc

    好的,这在前面的博文中有解释:当您在项目中 cd 时,它会确保您处于相同的 ruby​​ 版本(但似乎已经是这种情况了......)

    第 3 步:运行 bundle install --deployment

    deployment 选项表示将自动使用缓存的 gem。这可确保您的生产环境完美地反映您的开发环境。

    希望它能解决问题...

    【讨论】:

    • 谢谢,我会和我的开发同事讨论这个问题。看起来很明智:)
    猜你喜欢
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多