加载Rails 3应用程序的部分内容

5
我正在开发一个适用于Rails 3的gem,它包含两个主要组件。第一个是Rails生成器,它会向Rails项目添加一些新文件/文件夹。第二个是运行时环境,它会加载所有上述文件(一些使用我的DSL的Ruby类),以及默认的Rails堆栈的一部分。基本上,这是你期望在rails c中能够访问的所有内容,但不包括路由、控制器、帮助程序和视图。除了特定部分之外,加载Rails环境的正确方法是什么?
附注:我很想看到关于需要Rails应用程序的任何好文章。
2个回答

1

也许你需要 Rails::Initializable

你可以这样做:

initializer "active_support.initialize_whiny_nils" do |app|
  require 'active_support/whiny_nil' if app.config.whiny_nils
end

1

我不是完全清楚你的意思,或者这是否有帮助,但听起来类似于我在编写的实用程序中所做的事情。

我的实用程序会这样加载环境:

#!/usr/bin/env ruby
require File.expand_path('../../config/environment',  __FILE__)

调用 ../../config/boot 会导致在 Gemfile 中定义的 gem 被加载。因此,如果您只需要 Rails 栈的一部分,则只需在 Gemfile 中调用该部分即可。

这为我提供了我的 Rails 上下文、访问模型和其他资源的方式。

(更新) 要跳过 Rails 栈的某些部分,请查看如何替换 ActiveRecord 的方法: http://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started

希望这可以帮助到您。


我更关心不加载它的某些部分。我知道需要 'config/application'。 - bloudermilk
刚注意到你提到了更改Gemfile的事情。不幸的是,这对我没有用,因为我仍然需要Rails服务器正常运行。 - bloudermilk
你想运行哪些部分而不运行哪些部分?是应用程序特定的部分(例如特定的模型/控制器等)?还是Rails框架的特定部分? - johnmartirano
1
我使用gemified engines将应用程序功能分解为组件。目前,我正在处理共享多个引擎层次结构的多个应用程序的问题。但是,听起来你想加载Rails堆栈的子集 - 而不是应用程序堆栈 - 也许通过类似于require "action_controller/railtie"的方式。 - johnmartirano
看起来这将是最好的选择。我希望不必更改application.rb,因为这是我想为其他人提供的库,但这样做也可以。非常感谢! - bloudermilk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接