Безопасный язык ERB? - PullRequest
       15

Безопасный язык ERB?

3 голосов
/ 11 ноября 2009

Интересно, есть ли безопасный шаблон, который собирает ERB? ERB очень прост в использовании, но смертельная часть использования его в CMS - это чрезмерно мощный доступ (вы можете просто написать несколько действительно неприятных вещей за несколько секунд ...) Так что мне интересно, есть ли шанс такой язык существует.

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

Обновление: это не идеально (так как не эрб), но кажется намного лучше, чем Liquid: http://github.com/scottpersinger/laminate

Вы должны использовать Lua для своего шаблона, но Lua уже намного лучше, чем пытаться использовать жидкость (которая не позволяет вам выполнять простой синтаксис присваивания ...)

Ответы [ 3 ]

3 голосов
/ 06 июня 2012

Вы должны рассмотреть Handlebars.rb . Он «использует therubyracer для привязки к реальной реализации JavaScript в Handlebars.js, чтобы вы могли использовать его из ruby».

Вот их пример кода:

require 'handlebars'
handlebars = Handlebars::Context.new
template = handlebars.compile("{{say}}{{what}}")
template.call(:say => "Hey", :what => "Yuh!") #=> "Hey Yuh!"
2 голосов
/ 06 июня 2012

Вы также должны рассмотреть Усы :

Mustache.render("Hello {{planet}}", :planet => "World!")
=> "Hello World!"
2 голосов
/ 06 июня 2012

Хотя вы написали «Пожалуйста, я не хочу радиус / жидкость», я не понимаю вашего нежелания. Просто перейдите на страницу Liquid и посмотрите, насколько это просто:

gem install liquid

Вот пример кода:

<ul id="products">
  {% for product in products %}
    <li>
      <h2>{{ product.title }}</h2>
      Only {{ product.price | format_as_money }}

      <p>{{ product.description | prettyprint | truncate: 200  }}</p>
    </li>
  {% endfor %}
</ul>

И, чтобы использовать это:

Liquid::Template.parse(template).render 'products' => Product.find(:all)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...