Имеет ли смысл создавать гем Ruby, который состоит только из частичных шаблонов Rails? - PullRequest
0 голосов
/ 26 октября 2009

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

Когда вы создаете гем Ruby, вы ограничены включением только функциональности Ruby или можете создать гем, который состоит из шаблонов Rails, файлов CSS и скриптов JavaScripts?

Если это так, как пользователь gem получит доступ к этим ресурсам в проекте Rails (помимо добавления оператора config gem в файл environment.rb?

Ответы [ 3 ]

1 голос
/ 26 октября 2009

Как отмечает dmathieu, гемы предназначены для библиотек ruby, установленных в пути загрузки системы, а не для вещей, которые попадают в каталог вашего проекта. Однако если вы хотите упаковать свой скелет проекта rails как гем, было бы достаточно иметь небольшой исполняемый файл ruby, который служил генератором для копирования дерева проекта скелета в целевой каталог. Затем вы можете упаковать все это в gem, ваши скелетные файлы могут находиться в каталоге gem, и вы можете сказать generate_new_project someproject, чтобы скопировать их в новый каталог проекта.

1 голос
/ 26 октября 2009

Нет, это не так. Драгоценные камни - это библиотеки кодов, а не статические файлы.

Когда вы загружаете драгоценный камень, вы не перемещаете файлы в ваш публичный каталог. Вы загружаете файл ruby ​​и получаете доступ к модулю. Таким образом, вы можете выполнять только код ruby ​​внутри него.
Но ваш код ruby ​​может дать вам несколько помощников, которые позволят вам, например, легко создать свой дизайн.

Если вы хотите включить статические файловые ресурсы в каждый из ваших проектов ruby, я бы увидел два решения:

  • Создайте шаблон проекта, включая все CSS, JavaScript и т. Д., Которые вы используете каждый раз. В качестве примера вы можете взять подтяжки .

  • Создайте новый репозиторий со всеми этими статическими файлами и добавьте его как подмодуль (с git или svn ) и включите его в каждый из ваших проектов.

Первое решение будет моим любимым, но вы можете выбрать другое.

0 голосов
/ 27 октября 2009

Вы можете легко добавлять партиалы и другие представления HAML, Builder или ERB. Должна работать следующая структура:

# in my_gem/rails/init.rb
ActionController::Base.append_view_path(File.expand_path(File.join(File.dirname(__FILE__), '..', 'views')))

# in my_gem/views/my_gem/_some_partial.html.erb
This is a partial from MyGem!

# in your_rails_app/views/some_controller/some_view.html.erb:
<%= render :partial => '/my_gem/some_partial' -%>

Это не дает прямого ответа на ваш вопрос о статических файлах. Часто лучшим вариантом является генератор, который копирует CSS, JS и другие файлы в ваш публичный каталог. В качестве альтернативы вы можете использовать StaticFilesController и поместить статические файлы в этот каталог представлений.

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