【发布时间】:2013-12-15 08:41:43
【问题描述】:
在我的 gemspec 文件中:
- 我有一个名为 zconfig 的 gem 依赖项,它明确需要 net-ssh 版本 2.6.8
- 我也在使用 net-sftp,它又需要 net-ssh 版本 >= 2.6.5
当我bundle install 时,bundler 足够聪明,可以识别两个 gem 的需求,并正确地将 2.6.8 识别为要安装的 net-ssh 版本。
net-sftp (2.1.2)
net-ssh (>= 2.6.5)
...
net-ssh (2.6.8)
...
zconfig (0.2.7)
mysql (~> 2.9.1)
mysql2 (~> 0.3.13)
net-ssh (~> 2.6.8)
net-ssh-gateway (~> 1.2.0)
sequel (~> 4.1.0)
sqlite3 (~> 1.3.7)
到目前为止,在远程服务器上进行测试时,我一直在克隆项目并使用 bundle install --deployment 安装这些 gem,然后使用 bundle exec .. 使用本地安装的供应商 gem 运行项目
但是,我现在已经完成了开发,我已经将项目打包为 gem 并将其安装在远程服务器上。问题是执行 gem 时,ruby 不符合我的 Gemfile.lock 规范并使用 net-ssh 2.7.0,这会导致冲突:
/usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:1615:in `raise_if_conflicts': Unable to activate zconfig-0.2.7, because net-ssh-2.7.0 conflicts with net-ssh (~> 2.6.8) (Gem::LoadError)
有没有办法像bundle exec my_gem 这样使用 Gemfile.lock 规范?
【问题讨论】:
-
当然可以使用
bundle exec启动远程服务器。远程服务器现在是如何启动的?另一种选择可能是从服务器中删除 2.7.0 版本的 gem。 (假设该服务器上没有其他人需要它......) -
如果您将项目打包为 gem,您需要在
project.gemspec中指定依赖项。
标签: ruby ssh rubygems net-ssh gemfile.lock