Les*_*ill 12 ruby rubygems bundler
我正在研究一个宝石,它在github上.
当我在应用程序中包含gem时,执行capistrano部署,并(在服务器上)运行:
bundle outdated
Run Code Online (Sandbox Code Playgroud)
我知道了:
* authengine (0.0.1 d8baa49 > 0.0.1 de43dfa)
Run Code Online (Sandbox Code Playgroud)
这告诉我可以提供更新的提交.为什么捆绑更新(capistrano部署的一部分)没有拉出更新的版本?主机应用程序的Gemfile中没有版本约束,无论如何它们具有相同的版本号,只是不同的提交.
即使我登录服务器并运行
bundle update authengine
Run Code Online (Sandbox Code Playgroud)
之后我得到了相同的"过时"结果.
我在这里错过了什么?
Jud*_*son 15
我发现可能导致这种情况的一件事是,如果捆绑中的其他宝石按照不兼容的版本对宝石提出要求.Bundler试图通过选择宝石的版本来协调这些,这样他们的要求都可以满足.结果是它悄然拒绝更新宝石.
检查此方法的方法是在Gemfile中设置显式版本要求.就像是
gem "authengine", "> 0.0.2" #(you'll need to bump the version to make this work)
#or
gem "authengine", :ref => "d8baa49"
Run Code Online (Sandbox Code Playgroud)
然后跑
bundle update authengine
Run Code Online (Sandbox Code Playgroud)
你应该看到类似的东西(这取自我的具体情况):
Bundler找不到gem"json"的兼容版本:在Gemfile中:chef(> 10.8)ruby依赖于json(<= 1.6.1,> = 1.4.4)ruby
Run Code Online (Sandbox Code Playgroud)logical-construct (>= 0) ruby depends on json (1.7.5)
因此,在我的情况下,明确要求更新版本的json是一个问题.
运行时返回的输出是什么bundle update authengine
?它真的说它更新了宝石吗?还是它忽略了宝石?
您可以尝试使用该--source
参数来明确告诉 Bundler 使用 git 存储库。那个,或者你的
bundle update authengine --source https://github.com/mustardseeddatabase/authengine.git
Run Code Online (Sandbox Code Playgroud)
另外,当发生这样的意外情况时,我通常喜欢清理我的宝石列表。可能您仍然保留着旧版本的 gem,而不是在捆绑器中使用。
所以你可以这样做:
gem list
gem check
gem cleanup
Run Code Online (Sandbox Code Playgroud)
或者完全重新安装
gem uninstall authengine
bundle install
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10389 次 |
最近记录: |