使用system命令运行RAILS_ENV = production

时间:2014-10-12 12:28:09

标签: ruby-on-rails ruby bash nginx centos

我在服务器上运行的脚本遇到了一个非常奇怪的问题,详情如下。但基本上我使用脚本来设置rails应用程序,我从现有的rails应用程序调用该脚本。

在我现有的应用程序(在服务器上调用脚本的应用程序)中,我有: -

Spawnling.new do
   system "cd ~/ && ~/*/create_site.sh param1 param2 >> /tmp/logger"
end

create_site.sh脚本使用以下命令创建rails的全新安装:

rails new $DIR --database postgresql

然后,它会设置应用程序。问题是脚本似乎运行得非常好,直到它到达以下命令:

cd $DIR && RAILS_ENV=production rails g roroacms:install -v && RAILS_ENV=production rake assets:clean && RAILS_ENV=production rake assets:precompile

这真的很奇怪,因为当我以root用户手动运行top命令时,它似乎运行完全没有任何问题。当我在top命令的末尾查看记录器文件时,它看起来如下所示:

Your bundle is updated!
Bundle is installed and up to date
RoroaCMS installation
Installation complete with assets
Server started

当我手动运行它时,它会在运行命令的每一行之间输出许多消息。有什么想法吗?我想这可能与RAILS_ENV有关,因为rails new命令在脚本的早期运行正常。

1 个答案:

答案 0 :(得分:0)

您好我在服务器上做了很多脚本编写轨道,我总是使用格式bundle exec rails g rspec:install production,因此您的命令将是cd $DIR && bundle exec rails g roroacms:install -v production && bundle exec rake assets:clean production && bundle exec rake assets:precompile production。我背后没有太多的推理,但这种格式似乎在不同的服务器环境中最可靠。