如何在我的appspec文件中为aws codedeploy指定ruby版本

时间:2017-08-26 00:39:19

标签: ruby amazon-web-services yaml aws-code-deploy

我正在尝试将ruby应用程序部署到codedeploy,当它安装Sinatra时,它一直给我一个错误,它需要在服务器上安装更高版本的ruby。如何指定要使用的版本?

我在我的Gemfile中指定了它,在appspecfile中尝试了几种方法

LifecycleEvent - BeforeInstall
Script - scripts/install_dependencies
[stdout]Successfully installed bundler-1.15.4
[stdout]Parsing documentation for bundler-1.15.4
[stdout]Done installing documentation for bundler after 5 seconds
[stdout]1 gem installed
[stdout]Updating installed gems
[stdout]Nothing to update
[stderr]ERROR:  Error installing sinatra:
[stderr]    rack requires Ruby version >= 2.2.2. 

我在appspec.yml文件'

中尝试了这个
language: ruby
rvm:
  - 2.4.1
  - jruby-head
Before_install:  # For jruby-head to work.
  - gem install bundler
  - gem update bundler

任何形式的帮助都会非常棒,谢谢

这是我在尝试上面找到的内容之前的appspec.yml版本

version: 0.0
os: linux
files:
  - source: /.
   destination: /var/www/html/
hooks:
  BeforeInstall:
    - location: scripts/install_dependencies
      timeout: 300
      runas: root
    - location: app.rb
      timeout: 300
      runas: root
  ApplicationStop:
    - location: app.rb
      timeout: 300
      runas: root
  ApplicationStart:
    - location: app.rb
      timeout: 300
      runas: root

的Gemfile

source 'https://rubygems.org'
ruby "~> 2.3.0"
gem 'sinatra', '2.0.0'

1 个答案:

答案 0 :(得分:0)

CodeDeploy appspec实际上不需要支持该选项,每个生命周期事件的脚本都将使用env ruby​​运行。如果你想运行特定版本的ruby,可能你可以在其中一个脚本中将其更改为默认的ruby版本,用于生命周期事件之一,如BeforeInstall。