Что такое «использовать ClassName» в Ruby (вместо include, require, load) - PullRequest
0 голосов
/ 10 марта 2019

Что use SomeClassName делает в Ruby?

В процессе переноса «плоского / классического» приложения Sinatra для использования отдельных классов для каждого контроллера я наткнулся на запись в блоге, в которой однажды предлагалосьrequire затем use классов.

#app.rb a Sinatra classic app that formerly had all the routes in app.rb, now moved to separate controller classes
...
require "./app/controllers/foo_controller.rb"
require "./app/controllers/bar_controller.rb"

use Foo # a class with a set of routes
use Bar # a class with a set of routes
...

Мне как-то удавалось довольно эффективно использовать Ruby, Sinatra и Rails в течение многих лет без оператора use, и добавив такое общее слово какuse к любому запросу Google не сужает поиск.

1 Ответ

4 голосов
/ 10 марта 2019

Что такое «использовать ClassName» в Ruby (вместо include, require, load)

В рубине это ничего не значит. Это часть sinatra API.

Если эти файлы контроллера все еще содержат код в стиле «классического приложения», вам не нужно использовать use здесь. Просто требование их сработало бы.

Но так как они теперь технически разделены на приложения Sinatra (насколько я могу судить по содержанию файлов), вам необходимо смонтировать их в основном приложении. Это делается путем регистрации приложений (и их маршрутизаторов) в качестве промежуточного программного обеспечения.

Это метод, о котором идет речь: https://github.com/sinatra/sinatra/blob/6f15fba2790ebdf4d1215cebf425dea2ea3130ea/lib/sinatra/base.rb#L1430-L1433

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