在自动运行npm和Bower时将Rails应用程序部署到Elastic Beanstalk

时间:2016-12-26 18:36:28

标签: ruby-on-rails elastic-beanstalk

我正在尝试使用CLI将我的Rails应用程序部署到Elastic Beanstalk。 rails app部署得很好(资产编译,数据库迁移等)。但是,我无法运行 MediaInfo m = new MediaInfo.Builder("http://selevision9877-i.akamaihd.net/hls/live/219121/98773/1.m3u8") .setContentType("video/mp4") .setStreamType(MediaInfo.STREAM_TYPE_LIVE) .build(); 。我尝试运行bower install并将其安装到\ opt,但在尝试运行bower命令时,它并不认识bower已安装在系统中。

这是我的问题:

1)为什么我的app目录无法访问? 2)我如何获得它以便EB自动运行sudo npm install -g bower(我使用bower-rails gem与资产管道兼容)? 3)我如何获得它以便EB自动安装npm以便第2部分可以在上面工作?

谢谢你,希望我的问题有道理。 (相对较新的AWS)

1 个答案:

答案 0 :(得分:1)

我找到了更好的解决方案。而不是使用Bower Rails gem,只需在根目录中使用标准的bower.json文件。

然后,创建一个配置文件:.ebextension / ruby​​-settings.config,其中包含以下内容:

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/03_bower_install.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      echo "starting to install bower via npm"
      sudo npm install bower -g --prefix /usr/local --allow-root
      echo "starting to install git"
      sudo yum install git
      echo "changing directory to /var/app/ondeck"
      cd /var/app/ondeck
      ls
      echo "running bower install"
      sudo $(which bower) install --allow-root

这利用弹性beanstalk的预部署挂钩,并允许安装bower和bower install以在资产预编译之前运行