Amr*_*ana 27 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-4
Ruby on Rails中Gem包,插件和引擎有什么区别?
我认为我们在Rails3.2之前使用插件,在rails3.2发布之后我们使用gem包作为插件但是我们如何在ROR中使用引擎?
ric*_*inn 16
你知道Rails 2中的插件(即vendor/plugins
文件夹下的插件)不适用于Rails 3.2; 在Rails 4中完全删除了对它的支持.现在,有一个"gemified插件"的概念,其中插件基本上构建为gems,并且可以在不同的Rails应用程序之间共享.
但要回答关于宝石与插件的问题,请查看此Stackoverflow答案.简而言之,plugins
Rails 2 Universe是rails应用程序的扩展,而gem是一个打包的ruby应用程序.
至于Rails引擎,我发现这是一个非常简单直观的Rails引擎定义:
Rails Engines基本上是一个整个Rails应用程序,它位于另一个容器中.换句话说,正如文档所说:应用程序本身基本上只是根级别的引擎.多年来,我们已经将sen引擎视为gems的一部分,例如devise或rails_admin.这些示例通过提供一组"安装"到应用程序中的相对独立的功能来展示引擎的强大功能.
由于轨道引擎和插件都是类型的红宝石应用程序,因此它们都可以在技术上进行打包并用作宝石(通常).
lak*_*are 11
自Rails 4以来没有更多的插件.Rails 4.0发行说明:
Rails ::插件已经消失了.而不是将插件添加到供应商/插件,而是使用带有路径或git依赖关系的gem或bundler.
任何引擎都可以包含在宝石中.宝石只是"图书馆"的别名.
了解它们的不同之处的最佳方法是生成其中三个并查看其目录结构:
bundle gem a_gem
,用于非特定于轨道的功能.
rails plugin new b_railtie
,用于不需要完全类似应用程序设置的rails扩展.但是,因为它仍然是特定于轨道的设置(例如你得到你的Rails虚拟应用程序/test
),你可能会在其中使用railstie.railtie是一个继承自的类,它Rails::Railtie
为您提供了将代码连接到Rails的舒适DSL.例如,如果您想要执行:before
一些Rails应用程序初始化步骤,可以使用initializer
Railtie class_method.回形针
rails plugin new c_engine --full
,用于将成为完全成熟的应用程序的rails扩展,安装到您的应用程序中.除了基本的非设置之外,它会给你/app
dir和Engine
subclass --full
.
rails plugin new c_engine --mountable
,同样如--full
,但将创建名称空间,准备安装到您的应用程序引擎.狂欢
这是一个非常好的链接:http://hawkins.io/2012/03/defining_plugins_gems_railties_and_engines.
Vis*_*j V 10
答案引自 插件和Ruby宝石之间的区别?
宝石
- Gem是一个使用RubyGems定义的打包系统的打包ruby应用程序.
Rails本身就是一个宝石.
Rails gem安装在jruby-1.0\lib\ruby\gems\1.8\gems\rails-1.2.3中:
DIR bin
DIR builtin
68,465 CHANGELOG
DIR configs
DIR dispatches
DIR doc
DIR environment
307 fresh_rakefile
DIR helpers
DIR html
DIR lib
1,072 MIT -LICENSE
11,969 Rakefile
8,001 README
lib目录包含所有gem源代码.我们可以安装,升级和查询gem版本.如果使用像我的GemInstaller这样的工具,可以使用一个简单的配置文件轻松地自动安装和加载RubyGems.
- 安装了Ruby解释器的Gem可以由该解释器在系统范围内使用.
- Gem可以作为插件发布.
- 也可以在供应商/宝石中出售.
插入
- 插件是Rails框架的扩展.
- 无法使用命令升级.升级一个必须卸载然后安装升级版本.
- 必须要迷上rails应用程序.(必须有init.rb)
- 有一个install.rb文件.
- 插件无法作为Gem发布.
- 只能在应用范围内使用.
Goldspike插件安装在应用程序的vendor\plugins\rails-integration目录中:
7,089 build.xml
1,141 LICENSE.txt
DIR 插件
6,675 pom.xml
1,447 README
DIR 示例
插件/ goldspike目录包含
24个init.rb
25 install.rb
DIR lib
549 Rakefile
536 README
DIR 任务
DIR 测试
lib目录包含所有插件源代码.
宝石vs插件
发动机
一个Engine
在轨术语是一个Web应用程序的实际上是一个子程序.例如,博客,论坛或简单身份验证:这些不是完整的应用程序,而是可以添加到任何rails应用程序的页面/视图/控制器/模型.
在rails2中,这将使用a来完成plugin
.现在因为rails3引擎可以打包成一个gem
.
所以你什么时候使用其中一个:
归档时间: |
|
查看次数: |
11805 次 |
最近记录: |