Ruby on rails 弹性Beanstalk-使用Github Gems部署Rails
我已经阅读了一些关于在GEM文件中使用Ruby on rails 弹性Beanstalk-使用Github Gems部署Rails,ruby-on-rails,ruby,git,amazon-elastic-beanstalk,Ruby On Rails,Ruby,Git,Amazon Elastic Beanstalk,我已经阅读了一些关于在GEM文件中使用:git的讨论,但是这些解决方案似乎对我不起作用 这是我的.ebextensions/ruby.config文件: option_settings: - option_name: BUNDLE_DISABLE_SHARED_GEMS value: "1" - option_name: BUNDLE_PATH value: "vendor/bundle" packages: yum: git: [] container_
:git
的讨论,但是这些解决方案似乎对我不起作用
这是我的.ebextensions/ruby.config文件:
option_settings:
- option_name: BUNDLE_DISABLE_SHARED_GEMS
value: "1"
- option_name: BUNDLE_PATH
value: "vendor/bundle"
packages:
yum:
git: []
container_commands:
01bundle:
command: bundle --deployment
option_settings:
- option_name: BUNDLE_DISABLE_SHARED_GEMS
value: "1"
- option_name: BUNDLE_PATH
value: "vendor/bundle"
下面是我在GemFile中使用Github的一个地方:
gem 'themes_for_rails', :git => 'https://github.com/digitalmoksha/themes_for_rails.git'
最后,我在production.log中得到的错误与此gem不在此处有关:
I, [2013-08-28T13:29:26.979524 #26738] INFO -- : Start adding themes to assets [true]
I, [2013-08-28T13:30:36.528844 #26808] INFO -- : Start adding themes to assets [true]
I, [2013-08-28T13:32:47.069202 #26901] INFO -- : Start adding themes to assets [true]
I, [2013-08-28T13:32:48.254604 #26913] INFO -- : Started GET "/" for 123.456.789.10 at 2013-08-28 13:32:48 +0000
I, [2013-08-28T13:32:48.299025 #26913] INFO -- : Processing by StaticController#index as HTML
I, [2013-08-28T13:32:48.323622 #26913] INFO -- : Rendered static/index.html.erb within layouts/application (0.7ms)
I, [2013-08-28T13:32:48.331925 #26913] INFO -- : Completed 500 Internal Server Error in 32ms
F, [2013-08-28T13:32:48.334631 #26913] FATAL -- :
ActionView::Template::Error (undefined method `base_theme_stylesheet_path' for #<StaticController:0x00000003e16a10>):
3: <head>
4: <title>Boundless</title>
5: <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
6: <%= stylesheet_link_tag current_theme_stylesheet_path('application'), media: "all", "data-turbolinks-track" => true %>
7: <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
8: <%= javascript_include_tag current_theme_javascript_path('application'), "data-turbolinks-track" => true %>
9: <%= csrf_meta_tags %>
app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb__2276887207485791953_34113280'
以下是我的完整日志文件快照:
我能做些什么让它正常工作呢?也许我的.ebextenions文件不正确?将使它的行为与大多数rails环境中预期的一样。我开始在我们的部署中使用它时,我遇到了来自git repo的gem的相同问题
根据我的理解(至少我记得),基本原理是git位置是一个不受信任的源,并且在添加/回收实例时可能会影响或使您的部署不稳定/不可复制。虽然我同意,但我仍然希望在需要时使用它们。我在active admin上也遇到了同样的问题。您可以将gem放入供应商文件夹中。为我工作 将其放入您的gem文件:
gem 'themes_for_rails', path: 'vendor/themes_for_rails', require: 'themes_for_rails'
您需要将此代码保存到/.ebextensions/ruby.config文件中:
option_settings:
- option_name: BUNDLE_DISABLE_SHARED_GEMS
value: "1"
- option_name: BUNDLE_PATH
value: "vendor/bundle"
packages:
yum:
git: []
container_commands:
01bundle:
command: bundle --deployment
option_settings:
- option_name: BUNDLE_DISABLE_SHARED_GEMS
value: "1"
- option_name: BUNDLE_PATH
value: "vendor/bundle"
不要忘记将gem的git内容提取到vendor/themes\u for\u rails文件夹中。这是一个非常有用的起点。使用一些container_命令,我就能够解决我的问题。