簡體   English   中英

如何將應用程序布局打包到Ruby gem中?

[英]How to package application layout into a Ruby gem?

我正在一個包含三個不同應用程序的項目。 他們應該共享一些模型和外部布局。 為了避免代碼重復,我嘗試將應用程序布局( project_name/app/views/layouts/application.html.haml )提取到gem中。

我按照以下步驟操作:

  1. bundle gem common創建基礎寶石結構
  2. 將布局文件放置在common/app/views/layouts/application.html.haml
  3. 寫了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 
  4. 提交更改

  5. gem build common.gemspec (成功)
  6. rake install (成功)
  7. 將gem'common 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM