在Ruby on Rails的railties和发动机之间的差异3

问题描述 投票:27回答:2

我读了这些参数的一些文件,但我没了解清楚它们是什么,什么是它们之间的区别,如果他们中的一个适合我的需要。

我需要写一段程序的,可以在其他应用程序中插入,我想包括它在其他应用程序作为宝石。从本质上讲,我需要从托管的应用程序和发电机来配置参数几个模型,一个控制器和没意见,再加上一些初始化的支持。

我是在正确的道路?

我应该怎么看明白该怎么做?

更新:

一个很漂亮的文章有很多的细节可以发现qazxsw POI。

实质上:

Railtie是Rails框架的核心,并提供若干钩子延伸导轨和/或修改的初始化过程。

一个Rails ::引擎无非是Railtie多用已经设置一些初始化。而且,由于导轨::应用和Rails ::插件是引擎,这里所描述的相同的配置,可以在所有三个使用。

ruby-on-rails-3 ruby-on-rails-plugins rails-engines railtie
2个回答
7
投票

Railtie大概可以做你的描述,但它可能是更理想的是使用的发动机。该引擎可以有自己的设置,也就像一个Rails应用程序,因为它可以让你以包括作为一个普通的Rails应用程序控制器,视图和模型相同的方式/ app目录。

here


4
投票

Read this blog for more infoRails::Engine继承了所有功能,并增加了一些更(Rails::Railtie [源文档都还不错])。

基本上,railtie(==类,从Engine < Railtie source code继承)给你所有你需要用Rails应用程序交互。 和发动机(==类,从Rails::Railtie继承)是railtie +

  • 一些初始化设置(与Rails::Engine方法的帮助):使你的发动机的Rails应用程序般的文件夹结构加载到真正的应用程序,从而使 引擎会自动从initializer加载app/modelsapp/controllersapp/helpers到你的真正的应用程序,从config/routes.rb负载路线,从config/locales/*负载语言环境和负载任务。 你可以看到这个代码设置初始化: lib/tasks/*
  • 一些方便的方法,如require 'rails/all' Rails::Railtie.initializers.map(&:name) #=> [] Rails::Engine.initializers.map(&:name) #=> [:set_load_path, :set_autoload_paths, :add_routing_paths, :add_locales, :add_view_paths, :load_environment_config, :append_assets_path, :prepend_helpers_path, :load_config_initializers, :engines_blank_point]
© www.soinside.com 2019 - 2024. All rights reserved.