gpt4 book ai didi

ruby-on-rails - AWS Elastic Beanstalk 和 Every Gem

转载 作者:行者123 更新时间:2023-12-04 23:19:52 24 4
gpt4 key购买 nike

我有一个 Rails 4.2.1 应用程序,使用 Ruby 2.2。我正在尝试使用 Whenever Gem从我的代码库更新我的 Elastic Beanstalk 上的 cron 任务。我已经关注了 AWS 的一些资源,您可以在这些资源中将文件添加到 .ebextensions文件夹并通过 shell 文件使用 EB 的部署后 Hook 。这里有一些资源:

  • https://forums.aws.amazon.com/thread.jspa?threadID=137136
  • http://www.dannemanne.com/posts/post-deployment_script_on_elastic_beanstalk_restart_delayed_job
  • http://blog.endpoint.com/2015/01/elastic-beanstalk-whenever.html

  • 在博客文章之后,我添加了下面的文件,在 .ebextensions 中取消了关于文件的 gitignore 行的注释。文件夹,并部署了我的应用程序。不幸的是,我已经能够看到任何变化。我检查了日志文件( log/eb-tools.loglog/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 文件被调用?每次都可以在没有新部署的情况下进行测试吗?另外,如果Whenever gem不是最佳选择,我愿意接受其他选择。我主要希望能够在代码和版本控制下管理我的 cron 任务。

    提前致谢!

    更新:
  • 我在 .ebextensions 上有一个类型文件夹,这导致它没有被添加。在修复之后,我能够读取错误消息,并创建一个使用每当 gem 更新 crontab 的 cron 脚本。
  • 最佳答案

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

    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"

    关于ruby-on-rails - AWS Elastic Beanstalk 和 Every Gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30269649/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com