Наиболее подходящий способ создания каталога файлов из каталога файлов шаблонов с помощью Rails и ERB? - PullRequest
1 голос
/ 22 февраля 2011

Моя цель - создать каталог статических файлов html, javascript и image в моем приложении Rails (3) на основе шаблонов ERB.Например, как разработчик, я мог бы захотеть сгенерировать / обновить эти файлы:

#{Rails.root}/public/products/baseball.html
#{Rails.root}/public/products/football.js

.. из следующих файлов шаблонов:

#{Rails.root}/product_templates/baseball.html.erb
#{Rails.root}/product_templates/football.js.erb

В идеале шаблоны должны иметь доступ к моимсреда Rails приложения (включая URL-помощники, помощники просмотра, партиалы и т.Мне нужно было написать собственную логику для пропуска файлов, отличных от ERB, замены имен файлов и т. Д. Должен быть лучший способ.

Ответы [ 3 ]

1 голос
/ 22 февраля 2011

Я не уверен, что именно вы пытаетесь сделать, это может помочь дать лучшие ответы, но вот некоторая полезная информация:

Вы можете напрямую обратиться к erb, некоторая информация об этом здесь,которые, вероятно, уже делали:

http://www.ruby -doc.org / stdlib / libdoc / erb / rdoc / classes / ERB.html

Для спискаЛегкие файлы шаблонов Dir.glob должен иметь возможность легко находить конкретные файлы и проходить по ним:

http://ruby -doc.org / core / classes / Dir.html # M000629

Сложная часть, о которой я не знаю, как вам посоветовать, - это получить доступ к помощникам и другим вещам, которые предоставляет Rails.Помощники, которые вы пишете, являются просто модулями, так что вы можете смешивать их, что-то похожее может быть возможно с помощью встроенных помощников рельсов.


Это интересно и связано, но прямо не отвечает вашемувопрос, поскольку он использует шаблонизатор Liquid вместо ERB, но в остальном он генерирует статическое генерирование сайтов, о котором вы говорите:

https://github.com/mojombo/jekyll

0 голосов
/ 23 февраля 2011

Вот так у меня получилось нечто подобное. Он принимает исходные и целевые каталоги, стирает место назначения, затем обрабатывает исходный каталог, либо обрабатывает файлы ERB и помещает их в место назначения, либо просто копирует их (в случае файлов on-ERB). Его необходимо изменить для обработки рекурсивной обработки каталога.

Я вызываю его из грабли, вот так:

DirectoryGenerator.new.generate(Rails.root.join('src'), Rails.root.join('public', 'dest'))


class DirectoryGenerator
  include Rails.application.routes.url_helpers
  include ActionView::Helpers::TagHelper
  default_url_options[:host] = 'www.example.com'

  def generate(source, destination)
    FileUtils.rmtree(destination)
    FileUtils.mkdir_p(destination)

    Dir.glob(File.join(source, '*')).each do |path|
      pathname = Pathname.new(path)
      if pathname.extname == '.erb'
        File.open(destination.join(pathname.basename.sub(/\.erb$/, '')), 'w') do |file|
          file.puts(ERB.new(File.read(path)).result(binding))
        end
      else
        FileUtils.cp(pathname, File.join(destination, pathname.basename))
      end
    end
  end
end
0 голосов
/ 22 февраля 2011

Вы смотрели на шаблоны Rails?

http://m.onkey.org/rails-templates например ..

Не уверены, что именно вы получаете ... вы пытаетесь создать клиентские сайты с помощьюпредоставив несколько параметров .. что конечная цель?

...