2016-09-27 5 views
0

В моем приложении Rails я пытаюсь запустить задачу gulp во время развертывания, которая добавляет файл css в каталог внутри каталога public. В журнале развертывания я вижу, что задача выполняется успешно, но когда я нахожу SSH на сервере, я не вижу файл.Запустить команду в `before_migrate.rb` как пользователь с привилегиями sudo с AWS OpsWorks

[2016-09-24T01:35:02+00:00] INFO: Processing execute[create critical css] action run (/srv/www/toaster/releases/20160924013146/deploy/before_migrate.rb line 43) 
[2016-09-24T01:35:03+00:00] INFO: execute[create critical css] ran successfully 

В то время как я подключен к серверу через SSH и изменить пользователь к пользователю развертывания с sudo su deploy, а затем выполнить задачу глотка, файл получает создать.

Что я делаю неправильно?

Линия в before_migrate выглядит следующим образом ...

execute 'create critical css' do 
    user 'deploy' 
    cwd release_path 
    command 'gulp criticalCss' 
end 

Задача в моем gulpfile выглядит так ...

gulp.task('criticalCss', function() { 
    glob('./public/assets/theme_templates/v3/application-*.css', function(err, matches) { 
    var full_css = matches[0] 

    penthouse({ 
     url : 'http://performance-site.s2.fanbread.com/blogs/performance-benchmark', 
     css : full_css, 
     width: 375, 
     height: 667 
    }, function(err, criticalCss) { 
     console.log(err) 
     fs.writeFile('./public/assets/theme_templates/v3/posts_show.css', criticalCss); // Write the contents to a jekyll include 
    }); 
    }); 
}); 

Благодаря

ответ

0

Обычное решение Chef будет чтобы увеличить уровень журнала до DEBUG, чтобы увидеть выход команды. Не знаю, как вы это делаете с текущими Opsworks. В большинстве случаев эти проблемы связаны либо с переменной среды, как $HOME, которая не установлена, либо что gulp не верна.

В качестве дополнительной заметки я больше не рекомендую использовать ресурс deploy. Обычный ресурс git, вероятно, лучше вообще. См. Мою поваренную книгу application_examples для примера более современного развертывания Rails с шеф-поваром.

+0

Спасибо за ответ. По умолчанию OpsWorks запускает шеф-повар в режиме отладки. Вывод команды - это первый кодовый блок в моем вопросе, который на самом деле ничего не показывает. Я предполагаю, что если gulp не будет найден, это будет ошибкой с более полезным сообщением, намекающим на такое. В конце концов, я могу выполнить ssh в экземпляре и успешно выполнить «gulp criticalCSS» с успехом в качестве пользователя развертывания. Можете ли вы рассказать о том, почему вы не рекомендуете использовать поваренную книгу для развертывания? –

+0

Ресурс 'deploy' был создан для соответствия структуре Capistrano. У этого есть больше сложности и движущихся частей, чем требуется, и в свою очередь очень хрупкий. – coderanger