【发布时间】:2012-03-21 14:35:27
【问题描述】:
我跟着http://railscasts.com/episodes/245-new-gem-with-bundler 用捆绑器制作了一个 gem,这对于我只需要一个 lib 的 gem 来说非常有用,对于我需要创建带有 assets/controllers/models/views 的 mini 应用程序的 gems 有标准做法吗?
【问题讨论】:
标签: ruby-on-rails ruby gem bundle
我跟着http://railscasts.com/episodes/245-new-gem-with-bundler 用捆绑器制作了一个 gem,这对于我只需要一个 lib 的 gem 来说非常有用,对于我需要创建带有 assets/controllers/models/views 的 mini 应用程序的 gems 有标准做法吗?
【问题讨论】:
标签: ruby-on-rails ruby gem bundle
那时您会希望创建一个引擎。阅读Engines Guides 指南应该会给您一个很好的开始。
您在 gem 中需要的基本组件是一个位于 lib/your_gem.rb 的文件,其目的是简单地要求您的 gem 需要的任何东西。如果您的 gem 没有其他依赖项,那么它看起来像这样:
require 'your_gem/engine'
一条线,这么大的力量。它需要的lib/your_gem/engine.rb 文件中包含以下代码:
module YourGem
class Engine < Rails::Engine
end
end
通过简单地从Rails::Engine 继承,这会触发Rails::Engine 上的继承钩子,通知框架在您的gem 的位置有一个引擎。
如果您随后在 app/assets/stylesheets/your_gem/beauty.css 创建一个文件,则可以使用以下行将其包含在您的应用程序中(当然,假设您启用了资产管道):
<%= stylesheet_link_tag "your_gem/beauty" %>
既然我已经给了你它的简短版本,我真的真的真的非常推荐阅读 Engines Guide 从上到下以更好地理解它。
【讨论】: