Opsworks:Rails应用层:指定Ruby次要版本

时间:2014-12-18 23:10:54

标签: ruby amazon-web-services version aws-opsworks

我想将我的opsworks rails图层固定到ruby版本2.1.2 显然,这些层已升级到2.1.5,现在我无法再部署我的应用程序。

我尝试通过向我的堆栈添加自定义json来解决这个问题,如下所示:

"opsworks": {
       "ruby": {
              "full_version": "2.1.2"
        }
   }

我也试过这个:

"ruby": {
       "full_version": "2.1.2",
       "major_version": "2.1",
       "minor_version": "1"
   }

部署失败的错误消息:

[2014-12-18T22:36:58+00:00] INFO: Running queued delayed notifications before re-raising exception
[2014-12-18T22:36:58+00:00] ERROR: Running exception handlers
[2014-12-18T22:36:58+00:00] ERROR: Exception handlers complete
[2014-12-18T22:36:59+00:00] FATAL: Stacktrace dumped to /var/lib/aws/opsworks/cache.stage2/chef-stacktrace.out
[2014-12-18T22:36:59+00:00] ERROR: deploy[/srv/www/carlingo] (deploy::rails line 65) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '18'
---- Begin output of sudo su - deploy -c 'cd /srv/www/carlingo/releases/20141218223651 && /usr/local/bin/bundle install --path /home/deploy/.bundler/carlingo --without=test development' 2>&1 ----
STDOUT: Your Ruby version is 2.1.5, but your Gemfile specified 2.1.2
STDERR:

2 个答案:

答案 0 :(得分:1)

啊哈,我从一些老doco那里得到了一些技巧。

通过阅读aws/opsworks code我将我的自定义json更正为:

"ruby": {
       "version": "2.1.2"
   }

它有效!

实际上,这只是部分正确答案。

我有一个响应这个并正确降级的堆栈和另一个不会降级我的ruby版本的堆栈,它报告了这个" update_dependencies"并且在部署时继续失败。

Userspace Ruby version is up-to-date (2.1) 

登录时只有我的版本是2.1.5。

许多人重新部署和更新依赖关系,最后他们都会更新。

答案 1 :(得分:1)

现在看来正确的文档在这里:

http://docs.aws.amazon.com/opsworks/latest/userguide/attributes-json-opsworks-other.html#attributes-json-opsworks-ruby-version

这表示指定“opsworks”:“ruby_version”和“ruby”:“patch_version”如下:

{
  "opsworks": {
    "ruby_version": "2.2"
  },
  "ruby": {
    "patch_version": "3"
  }

}