执行"bundle exec rails runner"时,如何指定应用程序的目录?

When executing "bundle exec rails runner", how can I specify the application's directory?

当我执行这条命令时:

/usr/local/bin/bundle exec rails runner -e production "load 'job_alerta_validacao.rb'"

它returns:

Could not locate Gemfile

如何直接在命令中设置应用程序的位置,而无需使用 "cd" 命令创建脚本?

最常见的使用捆绑器的方法是cd到包含Gemfile 的目录。这也是最稳健的方式,因为其他一些 gem 可能会假定工作目录是 Rails 项目的根目录。

如果您只是不想更改当前 shell 的工作目录,cd in a subshell:

(cd /some/directory; /usr/local/bin/bundle exec rails runner -e production "load 'job_alerta_validacao.rb'")

如果你真的想通过 bundler 使用 Gemfile 目录以外的工作目录执行某些操作,请告诉 bundler 在哪里可以找到带有 BUNDLE_GEMFILE 环境变量的 Gemfile:

BUNDLE_GEMFILE=/some/directory/Gemfile /usr/local/bin/bundle exec rails runner -e production "load 'job_alerta_validacao.rb'"