2014-10-12 5 views
0

У меня возникла очень странная проблема со сценарием, который я запускаю на своем сервере, подробности ниже. Но по существу я использую скрипт для настройки приложения rails, и я вызываю этот скрипт из существующего приложения rails.Запуск RAILS_ENV = создание с системной командой

В моем существующем приложении (приложение, которое звонит скрипт на сервере) у меня есть: -

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

Скрипт create_site.sh создает новую установку рельсов, используя ниже:

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 

Это действительно странно, потому что, когда я запускаю верхнюю команду вручную, так как корневой пользователь, кажется, работать абсолютно нормально без каких-либо проблемы вообще. При просмотре файла регистратор в конце верхней команды она выглядит следующим образом:

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

Когда я запускаю это вручную выводит ряд сообщений между каждой строкой, в которой она выполняется командой. Есть идеи по этому поводу? Я думаю, что это может быть связано с RAILS_ENV, поскольку новая команда rails запускается в скрипте раньше.

+0

Вы используете скрипт как root? – Travis

+0

Хорошо, когда я запускаю его вручную как root, он работает правильно, но когда я запускаю команду в cron или в приведенной выше команде, она терпит неудачу в рельсах g roroacms: install Я думаю, что это может быть связано с этим, но нет сообщение об ошибке, поэтому очень сложно отлаживать –

ответ

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. У меня нет много аргументов, но этот формат кажется самым надежным в разных серверных средах.

Смежные вопросы