Rails: shell 控制器中的命令
Rails: shell command in controller
我正在尝试 运行 shell 命令与 rails 控制器中另一个项目的 rake 任务:
def generate
render json: `cd /Users/user/project && rvm use ruby-2.1.1@gemset && bundle exec rake users:build`
end
问题是没有为那个任务工作(什么都没发生)但是如果我 运行 rake routes
例如它 运行 宁好。
如果您正在 运行 另一个 ruby 项目,请确保在 运行 命令之前清理当前的捆绑环境。 Bundler 提供了一种简单的方法来解决这个不方便的问题:
Bundler.with_clean_env{
render json: `cd /Users/user/project && rvm use ruby-2.1.1@gemset && BUNDLE_GEMFILE=path/to/Gemfile bundle exec rake users:build`
}
注意 BUNDLE_GEMFILE 和 Bundler.with_clean_env
最好!
您可以试试这个(将以下片段放在您的控制器文件中)而不是发出系统调用:
require 'rake'
Rake::Task["users:build"]
我正在尝试 运行 shell 命令与 rails 控制器中另一个项目的 rake 任务:
def generate
render json: `cd /Users/user/project && rvm use ruby-2.1.1@gemset && bundle exec rake users:build`
end
问题是没有为那个任务工作(什么都没发生)但是如果我 运行 rake routes
例如它 运行 宁好。
如果您正在 运行 另一个 ruby 项目,请确保在 运行 命令之前清理当前的捆绑环境。 Bundler 提供了一种简单的方法来解决这个不方便的问题:
Bundler.with_clean_env{
render json: `cd /Users/user/project && rvm use ruby-2.1.1@gemset && BUNDLE_GEMFILE=path/to/Gemfile bundle exec rake users:build`
}
注意 BUNDLE_GEMFILE 和 Bundler.with_clean_env
最好!
您可以试试这个(将以下片段放在您的控制器文件中)而不是发出系统调用:
require 'rake'
Rake::Task["users:build"]