Как правильно указать путь к «приложению» в плагине Rails? - PullRequest
0 голосов
/ 19 марта 2010

Этот вопрос возник из-за того, что гем клеток задает каталоги шаблонов, используя File.join ('app', 'elements'). Это прекрасно работает, пока вы не запустите Rails как демон (scripts / server -d). Демон переключает каталоги в /, что оставляет пути к шаблонам ячеек, указывающие на неправильный абсолютный путь.

Мое решение состояло в том, чтобы установить пути по умолчанию к File.join (RAILS_ROOT, 'приложение', 'ячейки'). Это работает в Rails, но модульные тесты для плагина терпят неудачу, потому что RAILS_ROOT не определен. Использование File.join(File.dirname(__FILE__),'..' ... также работает, но требует около 6 уровней «..», что кажется неправильным.

Итак, мой вопрос: как правильно указать путь к каталогу в «app» в плагине Rails? Или что-то еще не так, что демонизирующий Rails не может найти относительные пути?

Ответы [ 2 ]

1 голос
/ 19 марта 2010

Я предлагаю перенести ваши изменения из плагина в инициализатор. В инициализаторе переопределите метод, который использует File.join («приложение», «ячейки»). Это имеет несколько преимуществ.

  1. Вы не изменяете сторонний код напрямую, поэтому вам, скорее всего, не придется беспокоиться о повторном применении изменений при обновлении.
  2. Не изменяя сам плагин, юнит-тесты плагина все равно пройдут.
  3. Вы можете использовать RAILS_ROOT, который я считаю правильным решением.
0 голосов
/ 04 ноября 2010

Для тех, у кого были проблемы с расшифровкой этого ответа, вот что сработало для меня:

Создайте файл config / initializers / cell.rb

, в него вставьте:

Cell::Base.view_paths=[
  File.join(RAILS_ROOT, 'app', 'cells'),
  File.join(RAILS_ROOT, 'app', 'cells', 'layouts')
]

Надеюсь, это поможет

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