【问题标题】:Foreman start returns bundle not found工头开始返回未找到的捆绑包
【发布时间】:2012-12-03 22:10:10
【问题描述】:

我最近从使用 Ubuntu 系统 Ruby 切换到使用 RVM。当我运行 foreman start 时,无论我的 Procfile 中的命令是什么,我都会收到一个 not found 错误。

我当前的 Procfile 是:

web: bundle exec unicorn -p $PORT -c ./unicorn.rb

所以错误是:

/home/timmillwood/.rvm/gems/ruby-1.9.3-p327/gems/foreman-0.60.2/bin/foreman-runner: 41: exec: bundle: not found

which foreman 返回

/home/timmillwood/.rvm/gems/ruby-1.9.3-p327/bin/foreman

which bundle 返回

/home/timmillwood/.rvm/gems/ruby-1.9.3-p327/bin/bundle

rvm info 的输出是:

ruby-1.9.3-p327:

  system:
    uname:       "Linux ubuntu 3.5.0-19-generic #30-Ubuntu SMP Tue Nov 13 17:48:01 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux"
    system:      "ubuntu/12.10/x86_64"
    bash:        "/bin/bash => GNU bash, version 4.2.37(1)-release (x86_64-pc-linux-gnu)"
    zsh:         " => not installed"

  rvm:
    version:      "rvm 1.17.3 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]"
    updated:      "1 hour 10 minutes 26 seconds ago"

  ruby:
    interpreter:  "ruby"
    version:      "1.9.3p327"
    date:         "2012-11-10"
    platform:     "x86_64-linux"
    patchlevel:   "2012-11-10 revision 37606"
    full_version: "ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]"

  homes:
    gem:          "/home/timmillwood/.rvm/gems/ruby-1.9.3-p327"
    ruby:         "/home/timmillwood/.rvm/rubies/ruby-1.9.3-p327"

  binaries:
    ruby:         "/home/timmillwood/.rvm/rubies/ruby-1.9.3-p327/bin/ruby"
    irb:          "/home/timmillwood/.rvm/rubies/ruby-1.9.3-p327/bin/irb"
    gem:          "/home/timmillwood/.rvm/rubies/ruby-1.9.3-p327/bin/gem"
    rake:         "/home/timmillwood/.rvm/gems/ruby-1.9.3-p327@global/bin/rake"

  environment:
    PATH:         "/home/timmillwood/.rvm/gems/ruby-1.9.3-p327/bin:/home/timmillwood/.rvm/gems/ruby-1.9.3-p327@global/bin:/home/timmillwood/.rvm/rubies/ruby-1.9.3-p327/bin:/home/timmillwood/.rvm/bin:/usr/local/heroku/bin:/home/timmillwood/Support-Tools/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
    GEM_HOME:     "/home/timmillwood/.rvm/gems/ruby-1.9.3-p327"
    GEM_PATH:     "/home/timmillwood/.rvm/gems/ruby-1.9.3-p327:/home/timmillwood/.rvm/gems/ruby-1.9.3-p327@global"
    MY_RUBY_HOME: "/home/timmillwood/.rvm/rubies/ruby-1.9.3-p327"
    IRBRC:        "/home/timmillwood/.rvm/rubies/ruby-1.9.3-p327/.irbrc"
    RUBYOPT:      ""
    gemset:       ""

我也尝试过使用 rbenv 来解决完全相同的问题。 Foreman 工作得很好,我使用的是系统 ruby​​,但我已经从 Ubuntu 中清除了这些,并希望使用 RVM 或 rbenv,以便我可以运行 Ruby 1.9 和 1.8。

就好像工头找不到捆绑二进制文件一样。我可以运行 bundle exec ruby web.rbruby web.rb 来运行 sinatra 应用程序,但这会失败,因为它不像工头那样从 .env 加载我的环境变量。我可以使用 rack-env 加载我的 .env 文件,然后使用 ruby web.rb 加载我的 sinatra 应用程序,但宁愿使用工头。

有什么想法吗?

【问题讨论】:

  • 你在做'bundle exec foreman start'吗?
  • 不,我不是,如果我尝试它会给出完全相同的结果。

标签: ruby ubuntu rvm bundler foreman


【解决方案1】:

原来我在通过heroku config:pull 生成的.env 文件中覆盖了PATH。删除该行已解决问题。

谢谢大家,这里没什么可看的。

【讨论】:

    【解决方案2】:

    像你的~/.profile 这样的接缝可能会覆盖PATH -> https://github.com/ddollar/foreman/blob/master/bin/foreman-runner#L37,确保~/.profile 或任何其他加载它的文件中没有PATH=...

    【讨论】:

    • 我的 .bashrc 中确实有:export PATH="/home/timmillwood/perl5/bin:$PATH";PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting,但删除这些并重新启动终端后,我仍然遇到同样的问题。
    • 有一些PATH=...,但将它们注释掉并没有帮助,它们都添加到而不是替换 PATH,但在开头或结尾处有 $PATH
    猜你喜欢
    • 2014-05-06
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2021-02-26
    • 1970-01-01
    • 2015-03-17
    相关资源
    最近更新 更多