В отличие от PHP (Codeigniter), в Ruby require
и include
очень отличаются по поведению.
require
загружает заданный путь (чем-то похожий на PHP), тогда как include
обычно используется для включения Module
в Class
.
require
- это метод из Kernel
, в то время как include
действует больше как объект класса Class
. Попробуй -
Kernel.respond_to? :require
include.is_a? Class
Прежде чем переходить на Rails, я предлагаю вам почитать на Ruby. Я предлагаю эту книгу и http://en.wikibooks.org/wiki/Ruby_programming_language.
Для Ruby on Rails я рекомендую -
- http://guides.rubyonrails.org/
- http://api.rubyonrails.org/
Для 2-го вопроса,
Я предполагаю, что инициализация плагинов является частью процесса инициализации Rails, поэтому, вероятно, она не может быть селективной (но я не уверен). См. http://ryanbigg.com/guides/initialization.html для получения дополнительной информации.
Самый простой способ избежать инициализации плагина - это поместить его в какой-то путь, которого нет в Rails '(auto)load_paths
, скажем, vendor/extensions
и require
их в контроллерах при необходимости, используя
require "vendor/extensions/example-plugin/lib/example-plugin"
Однако я рекомендую против этого и предлагаю подождать, пока количество плагинов не достигнет 1000/10. :)