Rails的“组件”究竟是什么(ActiveRecord,ActionController等)?

时间:2011-07-02 02:54:50

标签: ruby-on-rails

我刚开始学习Rails和Ruby。在http://guides.rubyonrails.org/getting_started.html上的Ruby on Rails指南说Rails由许多不同的“组件”组成。其中一些组件,例如ActiveRecord和ActionController,我在我的Rails应用程序中遇到过(分别在模型和控制器中)。

相关语法(“类Model< ActiveRecord :: Base”和“类ApplicationController< ActionController :: Base”)使它看起来像这些组件是Ruby模块,但如果它们是位于文件中的模块?如何在不首先使用Ruby方法“require”的情况下引用它们?

更新:所以我找到了所有内置模块和类。在我的服务器上,ActiveRecord模块的Base类的路径(例如)是:

/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.9/lib/active_record

但是我仍然不知道为什么我们可以在我们的模型和控制器中引用这些模块和类而不首先使用Ruby的require方法。

4 个答案:

答案 0 :(得分:10)

Rails 组件是默认情况下包含在application.rb require rails/all中的模块:

  • 动作邮件是用于设计电子邮件服务图层的模块
  • 操作包是用于处理和响应网络请求的模块(包括action_controller,action_dispatch
  • 操作视图是用于处理视图模板查找和呈现的模块
  • 活动作业是一个用于声明作业并使其在各种排队后端上运行的模块
  • 活动模型是从Rails 2 Active Record(validates :name, presence: true)中提取的非数据库功能
  • 活动记录将类连接到关系数据库表(迁移,关联
  • 有效支持包含所有Ruby扩展程序([].blank?

答案 1 :(得分:8)

  • ActiveRecord
  • ActionPack
  • 的ActionMailer
  • ActiveModel
  • 的ActiveResource
  • 的ActiveSupport

转到此页面Github Rails Page,在每个页面下,您都会详细解释其用途。

答案 2 :(得分:6)

Rails组件:

  • Actioncable - (Rails 5.0)
  • 的ActionMailer
  • ActionPack的
    • 抽象控制器
    • 动作控制器
    • 行动调度
    • 行动包
  • 的actionView
  • Activejob
  • activemodel的
  • ActiveRecord的
  • Activestorage - (Rails 5.2)
  • 的ActiveSupport

答案 3 :(得分:5)

在您的rails应用中,这些都是require d。例如,如果您在应用程序中通过script/rails command运行rails命令,script/rails需要config/boot,需要bundler,然后执行Bundler.setup,这需要所有您Gemfile中的宝石。