Ruby on rails 捆绑机是如何工作的?
这个问题是关于bundler,rubygems&它如何确定我调用的方法。它很长,所以请耐心听我说 据我所知,Bundler是一个用于管理ruby的gems的依赖项管理工具。它安装了Ruby on rails 捆绑机是如何工作的?,ruby-on-rails,ruby,ruby-on-rails-3,rubygems,bundler,Ruby On Rails,Ruby,Ruby On Rails 3,Rubygems,Bundler,这个问题是关于bundler,rubygems&它如何确定我调用的方法。它很长,所以请耐心听我说 据我所知,Bundler是一个用于管理ruby的gems的依赖项管理工具。它安装了Gemfile中列出的所有gem及其依赖项 我想问的问题最好用一个例子来说明。因此-->在我的rails应用程序中,我在控制器中执行以下操作:- module SurveyorControllerCustomMethods def create super end end class SurveyorC
Gemfile
中列出的所有gem及其依赖项
我想问的问题最好用一个例子来说明。因此-->在我的rails应用程序中,我在控制器中执行以下操作:-
module SurveyorControllerCustomMethods
def create
super
end
end
class SurveyorController < ApplicationController
include Surveyor::SurveyorControllerMethods
end
令人惊讶的是,ruby的。所以问题是:
jquery-rails
,我们甚至不需要在代码中包含/调用它们&然而,jquery-JavaScript文件是自动包含的。我知道这不是魔法,这是怎么回事李>
它们的关键实际上在于如何在开箱即用的情况下设置Rails。这也是Rails在大型项目上启动缓慢的原因之一 在boot.rb中,您将发现:
require 'bunder/setup'
Bundler.require(:default, :development)
在application.rb的顶部,您会发现:
require 'bunder/setup'
Bundler.require(:default, :development)
最后一个方法调用返回GEM文件,然后迭代给定组中的所有GEM(:default
和:development
)。然后,它尝试确定应该加载的默认文件是什么,这通常是gem名称,但也可以由:require
选项指定。Bundler也有一些内置的命名约定异常,例如处理“-”而不是“\u1”
Bundler然后只加载gem的主文件,然后(通常)加载gem内部的文件
'bundler/setup'
文件执行负责加载路径的bundler.setup
。它为每个gem在$LOAD\u路径
前加(取消移位)前缀。关于这些负载路径应该是什么的实际信息来自rubygems
请查看以下内容中的源代码:
https://github.com/carlhuda/bundler/blob/master/lib/bundler/runtime.rb
[1] :当你启动一个新的Rails项目时,如果你删除Bundler.require行,只需要gems,你可能会发现它不会随着时间的推移变得如此缓慢。我在
config/boot.rb
或config/application.rb
中找不到Bundler.setup(:default,:development)
,抱歉,它需要bundler/setup
,这是间接的