【发布时间】:2016-08-10 20:26:40
【问题描述】:
我有一个自定义 gem,它只发布到 Github,而不是 rubygems.org,并更新了它的依赖项以包含 gem 'net-http-persistent'。
我遵循了我之前为其他依赖项所做的相同格式(使用 .gemspec 文件),bundle update 仍然可以正常工作。但是,现在当我尝试使用 Capistrano 将主应用程序(包括我的自定义 gem)部署到我的暂存服务器时,我遇到了这个错误:
DEBUG [20cee5f9] Command: cd /var/www/inside/releases/20160418182647 && ( RAILS_ENV=staging ~/.rvm/bin/rvm 2.1.0@rails4.1 do bundle exec rake assets:precompile )
DEBUG [20cee5f9] rake aborted!
DEBUG [20cee5f9] LoadError: cannot load such file -- net-http-persistent
DEBUG [20cee5f9] /var/www/inside/shared/bundle/ruby/2.1.0/bundler/gems/series25-5465e368ff56/lib/series25.rb:4:in `require'
DEBUG [20cee5f9] /var/www/inside/shared/bundle/ruby/2.1.0/bundler/gems/series25-5465e368ff56/lib/series25.rb:4:in `<top (required)>'
DEBUG [20cee5f9] /home/charles/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.2/lib/bundler/runtime.rb:76:in `require'
DEBUG [20cee5f9] /home/charles/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.2/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
DEBUG [20cee5f9] /home/charles/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.2/lib/bundler/runtime.rb:72:in `each'
DEBUG [20cee5f9] /home/charles/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.2/lib/bundler/runtime.rb:72:in `block in require'
DEBUG [20cee5f9] /home/charles/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.2/lib/bundler/runtime.rb:61:in `each'
DEBUG [20cee5f9] /home/charles/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.2/lib/bundler/runtime.rb:61:in `require'
DEBUG [20cee5f9] /home/charles/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.2/lib/bundler.rb:132:in `require'
DEBUG [20cee5f9] /var/www/inside/releases/20160418182647/config/application.rb:9:in `<top (required)>'
DEBUG [20cee5f9] /var/www/inside/releases/20160418182647/Rakefile:4:in `require'
DEBUG [20cee5f9] /var/www/inside/releases/20160418182647/Rakefile:4:in `<top (required)>'
DEBUG [20cee5f9] (See full trace by running task with --trace)
cap aborted!
我已经能够通过简单地运行rake assets:precompile 在本地复制错误。我尝试了许多潜在的修复方法,包括在本地安装 net-http-persistent 并将其添加到我的 Gemfile 中,但无济于事。
这是自定义 gem 当前在我的 gemfile 中的样子:
gem 'series25', git: 'git://github.com/chapmanu/series25.git'
我有点匆忙地提出了这个问题,所以如果我遗漏了任何相关信息,请告诉我。提前感谢您的帮助!
【问题讨论】:
-
bundle list是否显示已安装?您确定使用相同版本的 Ruby 来安装和运行它吗? -
您可能需要升级 gem 的版本,以便更新捆绑的版本。或者尝试重新安装 gem。
-
@tadman 在登台服务器上,我的自定义 gem 和 net-http-persistent 都显示在
bundle list如果你的意思是问我部署的本地 ruby 版本是和我服务器上的版本一样,那么是的。两者都在 2.1.0 -
@max-pleaner 我想知道版本控制是否对它有影响。我根本没有碰过版本,但我可以弄清楚如何去做。我已经尝试在服务器和本地重新安装 gem。
-
@homeofmatt 我在构建 gem 时发现需要以令人讨厌的频率执行版本颠簸和 git 提交。另一种方法可能是引用 Gemfile 中的本地路径,它应该热重载代码。
标签: ruby git rubygems rake capistrano