我已成功设置我的 aws 环境。但是我有一个问题。在我的 Gemfile 中,我有以下行:
gem 'activeadmin', :github => 'gregbell/active_admin'
当我执行 git aws.push
时,我可以在 aws 日志中看到以下错误:
/usr/local/share/ruby/gems/2.0/gems/bundler-1.3.5/lib/bundler/source/git.rb:177:in `rescue in load_spec_files': git://github.com/gregbell/active_admin.git (at master) is not checked out. Please run `bundle install` (Bundler::GitError)
我能够通过创建这个文件来解决这个问题:.ebextensions/ruby.config
option_settings:
- option_name: BUNDLE_DISABLE_SHARED_GEMS
value: "1"
- option_name: BUNDLE_PATH
value: "vendor/bundle"
packages:
yum:
git: []
这会将所有内容打包到 vendor/bundle 中,我的应用程序将启动 correctyl。
但是这种方法有两个问题:
- 部署时间很长,因为每次都需要安装所有gem
当我通过 ssh 连接到 EC2 实例时,我无法再执行命令。例如,我必须启动一个 rpush 守护进程。这在本地适用于
bundle exec rpush development
但在 EC2 上这会导致:bundle 执行 rpush /usr/local/share/ruby/gems/2.0/gems/bundler-1.3.5/lib/bundler.rb:284: 警告:PATH 中的不安全世界可写目录/var/app/current/vendor/bundle/bin,模式 040777 git://github.com/gregbell/active_admin.git (at master) 未 checkout 。请运行 bundle install
是否有其他方法可以正确安装 gems 并同时使用系统 gems?或者,如果这不可能,我如何在 bundle gems 时启动 rpush
?
最佳答案
在本地环境中更新 Gemfile.lock(bundle install
&& bundle update
)。并使用 Gemfile 和 Gemfile.lock 推送提交。再次部署到 AWS。
关于ruby - 从 git 中引用 ruby gem 会破坏 aws beanstalk 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24782081/