2015-10-28 3 views
1

Я знаю, что внутри моего механизма Rails я могу создать файл app/controllers/blah_controller.rb, и этот контроллер будет доступен из моего приложения Rails, точно так же, как оно было определено в самом Rails-приложении.Как создать механизм Rails, выставить файл в корневой каталог Rails?

Если я хочу, чтобы движок показывал файл в корневое приложение Rails, куда его поместить в Rails-движок? Основной камень будет иметь структуру, как:

my_engine 
    |_bin 
    |_lib 
    .gitignore 
    my_engine.gempspec 
    Gemfile 
    Rakefile 
    README.md 

ли я просто добавить the_file.rb к корню из драгоценных камней? Если да, то как Rails знает, чтобы включить его, а не другие файлы в корень gem?

my_engine 
    |_bin 
    |_lib 
    .gitignore 
    my_engine.gempspec 
    Gemfile 
    Rakefile 
    README.md 
    the_file.rb # I want this file to be present in the Rails app root. 
+0

Посмотрите на последнем разделе: https://robots.thoughtbot.com/tips-for-writing-your-own-rails-engine –

ответ

1

No Rails не будет знать, как загрузить файлы корневой путь.

Часть рельсов вы ищете является railtie двигатель: http://api.rubyonrails.org/classes/Rails/Engine.html

Я надеюсь, что вы установили двигатель в приложение, так что вы можете отлаживать. В приложении, которое имеет двигатель, вы можете проверить нетерпеливый нагруженных путь:

MyEngine::Engine.config.eager_load_paths 

, который возвращает массив всех загруженных путей.

Все, что вам нужно сделать, это: настроить двигатель для загрузки корневого пути:

module MyEngine 
    class Engine < ::Rails::Engine 
    isolate_namespace MyEngine 
    config.eager_load_paths << File.expand_path('../../..', __FILE__) 
    end 
end 

Затем создать фиктивный инициализатору в приложении Rails, что требует вашего двигатель корневого файла:

# /config/initializers/my_engine_dummy.rb 
require 'your_engine_root_file.rb' 

Место некоторые методы внутри рельсов консоли your_engine_root_file.rb

p 'Welcome to my engine` 

нагрузки от приложение рельсы и увидеть красивое послание

Допущение:

Я предположил, что вы используете MyEngine в качестве пространства имен для двигателя.

Предложение:

Не делать что :) Как многие знают, что имя коллапс является обычным делом в разработке программного обеспечения. Таким образом, вы можете изолировать файлы своего движка за пространством имен.

Надежда, что помогает

 Смежные вопросы

  • Нет связанных вопросов^_^