монтажные рейки двигателя ActiveAdmin внутри монтируемого двигателя - PullRequest
1 голос
/ 04 января 2012

Я пытаюсь смонтировать rails active admin gem в монтируемом движке, но застрял со следующей ошибкой при запуске фиктивного сервера приложений -

     /.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/file_update_checker.rb:25:in `stat': No such file or directory - /mycode/testingengine/app/admin (Errno::ENOENT)
from /.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/file_update_checker.rb:25:in `block in updated_at'
from /.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/file_update_checker.rb:25:in `map'
from /.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/file_update_checker.rb:25:in `updated_at'
from /.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/file_update_checker.rb:29:in `execute_if_updated'
from /.rvm/gems/ruby-1.9.2-p290/gems/activeadmin-0.3.3/lib/active_admin/reloader.rb:22:in `block in attach!'
from /.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:404:in `_run_prepare_callbacks'
from /.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
from /.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.1.1/lib/action_dispatch/middleware/reloader.rb:46:in `prepare!'
from /.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/application/finisher.rb:41:in `block in <module:Finisher>'
from /.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:30:in `instance_exec'
from /.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:30:in `run'
from /.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:55:in `block in run_initializers'
from /.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:54:in `each'
from /.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:54:in `run_initializers'
from /.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/application.rb:96:in `initialize!'
from /.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/railtie/configurable.rb:30:in `method_missing'
from /mycode/testingengine/config/environment.rb:5:in `<top (required)>'
from /.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `require'
from /.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `block in require'
from /.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:223:in `block in load_dependency'
from /.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:640:in `new_constants_in'
from /.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:223:in `load_dependency'
from /.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `require'
from /.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/application.rb:83:in `require_environment!'
from /.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/commands.rb:22:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

У кого-нибудь есть идеи, как это исправить? Я запустил rails g active_admin: установить в каталог родительского монтируемого движка, и папка / mycode / testingengine / app / admin существует с файлом панели мониторинга по умолчанию, поэтому я не уверен, куда идти. Любая помощь высоко ценится!

Ответы [ 2 ]

0 голосов
/ 31 мая 2014

Если ActiveAdmin настроен в вашем родительском движке и не хочет загромождать конфигурацию в родительском приложении ссылками на дочернее приложение, вы можете установить страницу загрузки ActiveAdmin в монтируемом движке:

module YourEngine
  class Engine < ::Rails::Engine

    # ...

    initializer :divery do |app|
      ActiveAdmin.application.load_paths << File.join(config.root, 'lib/admin')
    end

    # ...

  end
end

Обратите внимание, что важно, чтобы ваши ресурсы ActiveAdmin были , а не , определенные в app/, все ресурсы администратора должны быть определены в lib.

0 голосов
/ 05 января 2012

Наконец-то разобрался. В блоке инициализатора ActiveAdmin.setup добавьте следующее.

    config.load_paths.delete_at(0)
    config.load_paths << "#{Cms::Engine.root}/app/admin/"

Обязательно замените Cms на название вашего двигателя. Теперь он не будет пытаться загрузить activeadmin из приложения, используя папку вашего движка.

...