【问题标题】:Make ruby script use local gems, instead of common使 ruby​​ 脚本使用本地 gem,而不是普通的
【发布时间】:2014-10-23 05:41:59
【问题描述】:

我正在将我的 rails 项目部署到生产服务器。 ruby 只有 1.9.3 版本(我是在 2.1.2 上开发的),所以 gems 版本几乎没有兼容性问题。此外,我将其中一个 gem 下载到 vendor/gem_name 并在其源代码中进行了必要的修复,因此我需要完全使用我的该 gem 版本,并且如您所知,无法更新它。

在 Gemfile 中

require 'gem_name', :path => 'vendor/gem_name'

所以在将项目克隆到服务器后我运行

bundle install --path vendor/bundle

它在 vendor 文件夹中创建了 bundle 目录,其中包含我需要的 gems 版本。

之后我尝试运行获取脚本以通过命令向数据库填充一些数据

ruby *_fetch.rb

在 *_fetch.rb 内:

require 'gem_name'

它失败并出现错误

您已经激活 gem_name older_version,但您的 Gemfile 需要 gem_name 最新版本。使用 bundle exec 可以解决这个问题。 (宝石::加载错误) 来自 /usr/local/rvm/gems/ruby-1.9.3-p374/gems/bundler-1.3.5/lib/bundler/runtime.rb:19:in `setup'

那么我如何指定脚本来要求我编辑的本地 gem?

【问题讨论】:

    标签: ruby bundle


    【解决方案1】:

    使用bundle exec 运行它,这正是bundle exec 的用途。

    【讨论】:

    • 我已经试过了。 'bundle exec data_fetch.rb' 输出:bundler: command not found: zpinfo_fetch.rb 使用 bundle install 安装缺少的 gem 可执行文件运行 bundle install 完成,并显示 'Your bundle is complete!它被安装到 ./vendor/bundle'
    • 你试过bundle exec ruby data_fetch.rb吗?
    猜你喜欢
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    相关资源
    最近更新 更多