[英]How to package application layout into a Ruby gem?
我正在一個包含三個不同應用程序的項目。 他們應該共享一些模型和外部布局。 為了避免代碼重復,我嘗試將應用程序布局( project_name/app/views/layouts/application.html.haml
)提取到gem中。
我按照以下步驟操作:
bundle gem common
創建基礎寶石結構 common/app/views/layouts/application.html.haml
寫了Gemspec描述符
# -*- encoding: utf-8 -*- require File.expand_path('../lib/common/version', __FILE__) Gem::Specification.new do |gem| gem.authors = ["Arthur Alkmim"] gem.email = ["myemail@here"] gem.description = %q{Common project files} gem.summary = %q{Common project files, including layout and migrations} gem.homepage = "" gem.files = `git ls-files`.split($\\) gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) } gem.test_files = gem.files.grep(%r{^(test|spec|features)/}) gem.name = "common" gem.require_paths = ["lib"] gem.version = Common::VERSION end
提交更改
gem build common.gemspec
(成功) rake install
(成功) gem 'common'
放置在項目Gemfile中 但是,該項目仍然不會加載應用程序布局。 我該怎么做才能告訴項目必須通過gem加載布局文件?
提前致謝。
您是否已將寶石添加到Rails Gemfile中以將其包含在應用程序中?
您可以使用path選項指定開發中的相對路徑。 例如
gem 'common', :path => "../path/to/gem"
不要忘記然后運行bundle install
我解決了。 我將application.html.haml
更改為common.html.haml
,並將相關的布局調用放置在ApplicationController中。 似乎Rails不允許我將application.html布局打包為gem,但其他布局也可以。 如果有人想出更好的解決方案(較少的解決方法),請發布!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.