ruby-on-rails - rails 3 : What is the difference between an Engine and a Gem?

标签 ruby-on-rails ruby-on-rails-3

两者之间有什么区别,什么时候应该使用一个而不是另一个?

最佳答案

一个 Engine在 Rails 术语中,实际上是 Web 应用程序的子应用程序。例如,博客、论坛或简单的身份验证:这些不是成熟的应用程序,而是可以添加到任何 Rails 应用程序的页面/ View / Controller /模型。

在 rails2 中,这将使用 plugin 来完成。 .现在,由于 rails3 引擎可以打包在 gem 中。 .

一个 gem是一个 ruby​​ 库,可以在 http://rubygems.org 上找到它是打包和分发 ruby​​ 代码给其他 ruby​​ 专家的标准(唯一)方法。

所以得出结论:

  • gem:是一个通用库,可以很容易地安装,它是版本管理的,有依赖关系等等。
  • 引擎:是 Rails 应用程序的子应用程序,从 Rails 3 开始,它们作为 gem 分发(太棒了!)。

  • 所以你什么时候会使用其中一个:
  • 如果您想共享 ruby​​ 功能,请创建一个 gem
  • 如果您的 Rails 应用程序的某些部分可以更普遍地使用,请创建一个引擎(并将其打包在一个 gem 中)。

  • 希望这可以帮助。

    关于ruby-on-rails - rails 3 : What is the difference between an Engine and a Gem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6815401/

    相关文章:

    ruby-on-rails - Ruby:将数组传递给 starts_with?

    ruby-on-rails - 在多台机器上使用delay_job,其中一些任务需要在本地运行

    ruby-on-rails - 值未存储在 ruby​​ on rails 数组中

    mysql - Ubuntu 上未初始化常量 MysqlCompat::MysqlRes (mysql gem 错误),未修复

    ruby - Ruby on Rails 中的实用程序类

    ruby-on-rails - Sass::Engine.render 没有导入蓝图库...为什么?

    mysql - ActiveRecord通过范围从has_many中获取记录和相关关系

    ruby-on-rails - rails has_one 通过关系不存在

    ruby-on-rails - 动态页面的 Rails 嵌套路由

    ruby-on-rails - Cancan:json的能力类