Синатра и Хэмл: странное поведение после обновления гема - PullRequest
2 голосов
/ 22 июня 2011

Я создал сайт с использованием Haml и Sinatra.После обновления (наверное, после этого) сайт больше не работал;вот минимальный пример:

/ app.rb:

require 'rubygems' if RUBY_VERSION < '1.9'
require 'sinatra'
require 'haml'

get "/" do
  haml :index
end

/ views / layout.haml

!!!
%html{ :xmlns => "http://ww.w3.org/1999/xhtml", :lang => "en", "xml:lang" => "en" }
  %head
    %title test
  %body
    = yield

/ view / index.haml

%p test

и это вызывает у меня следующее исключение:

/usr/lib/ruby/gems/1.9.1/gems/tilt-1.3.2/lib/tilt/template.rb in initialize
    raise ArgumentError, "file or block required" if (@file || block).nil?

/usr/lib/ruby/gems/1.9.1/gems/sinatra-1.3.0.a/lib/sinatra/base.rb in new
    template.new(path, 1, options)

/usr/lib/ruby/gems/1.9.1/gems/sinatra-1.3.0.a/lib/sinatra/base.rb in block in compile_template
    template.new(path, 1, options)

/usr/lib/ruby/gems/1.9.1/gems/tilt-1.3.2/lib/tilt.rb in fetch
    @cache[key] ||= yield

/usr/lib/ruby/gems/1.9.1/gems/sinatra-1.3.0.a/lib/sinatra/base.rb in compile_template
    template_cache.fetch engine, data, options do

/usr/lib/ruby/gems/1.9.1/gems/sinatra-1.3.0.a/lib/sinatra/base.rb in render
    template = compile_template(engine, data, options, views)

/usr/lib/ruby/gems/1.9.1/gems/sinatra-1.3.0.a/lib/sinatra/base.rb in haml
    render :haml, template, options, locals

Я действительно не нашел способа это исправить, кто-нибудь знает, как его интерпретировать?

1 Ответ

2 голосов
/ 22 июня 2011

Я получаю ту же ошибку с Sinatra 1.3.0.a (используемой вами версией, которая, как я предполагаю, является кандидатом на выпуск, а не полной версией), но обновляется до последней версии (1.3.0.e) исправляет это, как и обновление до последней стабильной версии (1.2.6). Таким образом, ваш ответ - повышение или понижение.

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

gem "sinatra", "=1.2.6"

перед вызовом require "sinatra", или вы можете использовать Bundler (который использует тот же синтаксис).

...