/ home / webapp不是目录-Elastic Beanstalk(RAILS)

时间:2018-12-27 17:16:43

标签: ruby-on-rails ruby amazon-web-services ruby-on-rails-5 amazon-elastic-beanstalk

我正在尝试将Rails 5应用程序部署到Elastic Beanstalk,但是在日志文件中出现以下错误,该错误似乎表明我的主目录设置不正确。

我尝试通过将HOME设置为HOME来设置~/my-app-name环境变量,但是我没有走运,而且似乎也没有使用该变量。我在环境配置的“软件”部分下设置了变量。

/var/log/eb-activity.log

+ cd /var/app/ondeck
+ su -s /bin/bash -c 'bundle exec 
/opt/elasticbeanstalk/support/scripts/check-for-rake-task.rb assets:precompile' webapp
`/home/webapp` is not a directory.
Bundler will use `/tmp/bundler/home/webapp' as your home directory temporarily.
+ '[' false == true ']'
+ su -s /bin/bash -c 'bundle exec rake assets:precompile' webapp
`/home/webapp` is not a directory.
Bundler will use `/tmp/bundler/home/webapp' as your home directory temporarily.
rake aborted!
Psych::SyntaxError: (<unknown>): did not find expected alphabetic or numeric 
character while scanning an alias at line 83 column 22
/var/app/ondeck/config/environments/production.rb:96:in `block in <top (required)>'
/var/app/ondeck/config/environments/production.rb:1:in `<top (required)>'
/var/app/ondeck/config/environment.rb:5:in `<top (required)>'
/opt/rubies/ruby-2.5.3/bin/bundle:23:in `load'
/opt/rubies/ruby-2.5.3/bin/bundle:23:in `<main>'
Tasks: TOP => environment
(See full trace by running task with --trace) (Executor::NonZeroExitStatus)

我在这里发现了类似的问题:issue deploying rails 5 application to AWS using Elastic Beanstalk due to rb-readline

昨天我还问了关于psych错误的另一个问题(下面的链接),但我开始认为此错误可能是由于对HOME的无效引用引起的。在这一点上我很失落,已经花了好几个小时没有任何运气。

我昨天发布了另一个有关心理错误的问题: Error Deploying on Elastic Beanstalk - Rails

1 个答案:

答案 0 :(得分:2)

Ruby:2.7.0 滑轨:6.0.2.1 Solidus:v2.10.0

只需将下面的“命令”部分添加到您的.ebextensions/packages.config

添加必需的命令:

# Setup linux packages
option_settings:
  - option_name: BUNDLE_DISABLE_SHARED_GEMS
    value: "1"
  - option_name: BUNDLE_PATH
    value: "vendor/bundle"

packages:
  yum:
    git: []
    ImageMagick: []
    ImageMagick-devel: []
    openssl-devel: []
    postgresql93-devel: []

commands:
  01_node_get:
    # run this command from /tmp directory
    cwd: /tmp
    # flag -y for no-interaction installation
    command: 'curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -'

  02_node_install:
    # run this command from /tmp directory
    cwd: /tmp
    command: 'sudo yum -y install nodejs'

  03_yarn_get:
    # run this command from /tmp directory
    cwd: /tmp
    # don't run the command if yarn is already installed (file /usr/bin/yarn exists)
    test: '[ ! -f /usr/bin/yarn ] && echo "yarn not installed"'
    command: 'sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo'

  04_yarn_install:
    # run this command from /tmp directory
    cwd: /tmp
    test: '[ ! -f /usr/bin/yarn ] && echo "yarn not installed"'
    command: 'sudo yum -y install yarn'

  05_home_dir:
    test: '[ ! -p /home/webapp ] && echo "webapp not exited"'
    command: 'sudo mkdir -p /home/webapp'

  06_grant_home_dir:
    test: '[ ! -p /home/webapp ] && echo "webapp not exited"'
    command: 'sudo chmod 777 /home/webapp'

来源: https://medium.com/@tranduchanh.ms/deploy-and-manage-production-rails-5-app-with-aws-elastic-beanstalk-3efb0dfe021a