【问题标题】:How to tell bundler where the Gemfile is?如何告诉 bundler Gemfile 在哪里?
【发布时间】:2011-03-23 06:48:23
【问题描述】:

我正在尝试从 cron 运行 Ruby 脚本。

脚本使用 Bundler 来管理 gem 依赖项。由于 cron 未在 $PWD 中运行,我每次都从 Bundler 收到“无法找到 Gemfile”错误,这是有道理的,因为从 cron 运行时 Gemfile 不在当前路径中。

有没有办法告诉 Bundler 使用不在当前路径中的 Gemfile?

【问题讨论】:

    标签: ruby bundler


    【解决方案1】:

    最好的办法是将cd 放入您的cron 中的相关目录。您还可以使用 BUNDLE_GEMFILE 环境变量指向 Gemfile。如果您对BUNDLE_GEMFILE 有任何问题,请let us know

    【讨论】:

    • Yehuda,谢谢我在调用'bundle'之前寻找一个要设置的环境变量,但我最终做了“cd /path && bundle exec foo.rb”,这样可能更容易。
    【解决方案2】:

    您可以让主脚本更改其目录:

    Dir.chdir File.dirname(__FILE__)
    

    您可能需要使用 File.expand_path 对其进行调整,以获取应用的根目录(Gemfile 所在的位置)。假设你的脚本是/apps/myapp/bin/main.rbchdir 行将是:

    Dir.chdir File.expand_path('../..', __FILE__)
    

    当然,您必须确保您的应用不会因为 chdir 而崩溃 - 但如果您是 cron 中的 cd-ing,则不应该这样做。

    如果脚本是一个守护进程,并且您希望在正常操作期间将其更改为根目录/,您可以在调用Bundler.setupBundler.require 之后执行此操作。

    虽然您可以在 cron 中执行 cd,但我不想这样做,因为 cron 已经很难阅读和维护。

    【讨论】:

      猜你喜欢
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 2017-01-11
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多