Как загрузить библиотеки в контроллеры и как динамически загружать приложение - PullRequest
1 голос
/ 10 сентября 2010

Я новичок в Rails. Я пришел из фона Codeigniter. Мне трудно найти ресурсы по Rails 3.0 для начинающих. Я прочитал мою новую книгу по Rails, но все еще не уверен в некоторых вещах.

Как мне включить мои библиотеки или помощников в контроллер? Я использую «включить» или «требовать»?

Второй вопрос: как динамически загружать плагины? Допустим, у меня есть 1000 плагинов. Я не хочу, чтобы они были инициализированы. Есть ли способ для контроллера, который плагин инициализируется с контроллеров?

Ответы [ 2 ]

2 голосов
/ 10 сентября 2010

Когда ваше приложение запускается, оно запускает все сценарии в yourapp/config/initializers, там вы можете добавить некоторые вещи, которые вы хотите всегда представлять.

в yourapp/config/application.rb Вы можете добавить

config.autoload_paths += %W(#{config.root}/lib)

внутри class Application декларации. Тогда каждый раз, когда вы используете класс, о котором он не знает, например, SomeNewClass.new "param" rails попытается автоматически загрузить yourapp/lib/some_new_class.rb

Что касается вашего второго вопроса, я не знаю. Я никогда не использовал больше, чем несколько плагинов.

0 голосов
/ 27 сентября 2010

В отличие от 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 я рекомендую -

  1. http://guides.rubyonrails.org/
  2. 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. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...