【发布时间】:2015-10-20 08:08:55
【问题描述】:
问题: 我有两个应用程序 A 和 B 都在同一台服务器上运行。我在文件系统中有一个脚本
cd /data/B/
bundle exec rake -T
当我通过应用程序 A 的 rails 控制台运行脚本时,由于控制台加载 A 的 gem 并且 rake 任务失败,因此会出错
eg: system("sh ~/test.sh")
rake aborted!
LoadError: cannot load such file -- log4r
/home/kumolus/api/config/application.rb:9:in `require'
/home/kumolus/api/config/application.rb:9:in `<top (required)>'
/home/kumolus/api/Rakefile:1:in `require'
/home/kumolus/api/Rakefile:1:in `<top (required)>'
(See full trace by running task with --trace)
当我通过 unix 命令行运行脚本时(与我的密码无关)它可以工作
cd ~
sh test.sh #works
cd /data/A #my application A's dir
sh ~/test.sh #also works
我需要它来通过 rails 工作。有什么帮助吗?谢谢!
【问题讨论】:
-
您在使用 RVM 吗?项目是否有不同的环境,例如不同的 gemsets/ruby 版本?
-
不,我们正在通过捆绑程序管理应用程序
-
两个应用程序都在同一个环境中,但它们通过捆绑器使用不同的 gem
-
当您在命令行上执行它并且它工作时,您是否在应用程序 A 的项目文件夹中?
-
它可以在任何位置工作,如果我给脚本绝对路径,以及如果我在项目 A 中的脚本相对路径
标签: ruby-on-rails ruby gem bundler