Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails AWS弹性豆茎和宝石_Ruby On Rails_Ruby On Rails 4_Amazon Web Services_Amazon Elastic Beanstalk_Whenever - Fatal编程技术网

Ruby on rails AWS弹性豆茎和宝石

Ruby on rails AWS弹性豆茎和宝石,ruby-on-rails,ruby-on-rails-4,amazon-web-services,amazon-elastic-beanstalk,whenever,Ruby On Rails,Ruby On Rails 4,Amazon Web Services,Amazon Elastic Beanstalk,Whenever,我有一个Rails 4.2.1应用程序,使用Ruby 2.2。我试图使用从代码库中更新Elastic Beanstalk上的cron任务。我已经了解了AWS的一些资源,您可以将文件添加到.ebextensions文件夹,并通过shell文件使用EB的部署后挂钩。以下是一些资源: 在博客文章之后,我添加了下面的文件,取消了关于.ebextensions文件夹中文件的gitignore行的注释,并部署了我的应用程序。不幸的是,我看到了任何变化。我已经检查了日志文件(log/eb tools

我有一个Rails 4.2.1应用程序,使用Ruby 2.2。我试图使用从代码库中更新Elastic Beanstalk上的cron任务。我已经了解了AWS的一些资源,您可以将文件添加到
.ebextensions
文件夹,并通过shell文件使用EB的部署后挂钩。以下是一些资源:

在博客文章之后,我添加了下面的文件,取消了关于
.ebextensions
文件夹中文件的gitignore行的注释,并部署了我的应用程序。不幸的是,我看到了任何变化。我已经检查了日志文件(
log/eb tools.log
log/cron
,等等),并将我创建的shell文件的所有日志文件、任何时候的日志文件以及更多的日志文件都归为灰色。不过运气不好

commands:
  create-post-dir:
  command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post"
  ignoreErrors: true
files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_update_cron.sh"
  mode: "000755"
  owner: root
  group: root
  content: |
    #!/usr/bin/env bash
    # Using similar syntax as the appdeploy pre hooks that is managed by AWS

    # Loading environment data
    EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir)
    EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir)
    EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user)
    EB_APP_CURRENT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir)
    EB_APP_PIDS_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_pid_dir)

    # Setting up correct environment and ruby version so that bundle can load all gems
    . $EB_SUPPORT_DIR/envvars
    . $EB_SCRIPT_DIR/use-app-ruby.sh

    # Now we can do the actual restart of the worker. Make sure to have double quotes when using env vars in the command.
    su -c "cd $EB_APP_CURRENT_DIR; bundle exec whenever --update-cron --set='environment=$RACK_ENV'" - $EB_APP_USER
如何确保调用此shell文件?我可以在每次没有新部署的情况下测试它吗?此外,如果创业板不是最好的选择,我也愿意接受其他选择。我主要希望能够在代码和版本控制下管理我的cron任务

提前谢谢

更新:

  • 我在
    .ebextensions
    文件夹中有一个类型,导致无法添加该类型。修复后,我可以读取错误消息,并创建一个cron脚本,使用gem更新crontab

在修复了我的
.ebextensions
文件夹名中的一个输入错误后,我就能够解决这个问题了。之后,脚本被编译,日志消息开始出现。在阅读日志消息之后,我想到了以下配置脚本(
.ebextensions/01\u cron.config
):


谢谢你的回复。但是您上面提到的作为
命令的所有行
?我在这个设置中遇到了一个问题。在部署时,我不断收到一个错误,因为
无论何时:找不到命令
。gem安装在机器上,我可以在通过ssh登录时随时运行
。有什么想法吗?
files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/01_cron.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      # Using similar syntax as the appdeploy pre hooks that is managed by AWS
      set -xe

      EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir)
      EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir)
      EB_DEPLOY_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir)

      . $EB_SUPPORT_DIR/envvars
      . $EB_SCRIPT_DIR/use-app-ruby.sh

      cd $EB_DEPLOY_DIR
      su -c "bundle exec whenever --update-cron"
      su -c "crontab -l"