Синатра через рэкап не любит встроенные шаблоны
Призывая саму синатру, $ ruby tubemp.rb
работает. Но через rackup
Это не. Приложение как-то не может найти встроенные шаблоны.
#config.ru
require 'rubygems'
require 'sinatra'
set :environment, ENV['RACK_ENV'].to_sym
disable :run, :reload
require './tubemp.rb'
run Sinatra::Application
Возвращаемая ошибка:
No such file or directory - /home/ber/Documenten/ET_tubemp/code/views/index.erb:
Соответствующая часть от tubemp.rb
get '/' do
#...
erb :index
end
__END__
@@ layout
<html>
...
<%= yield %>
@@ index
Welcome!
Каким-то образом, через rackup, он ожидает, что представления будут жить в реальных файлах представлений. Я думаю, что стойка не может справиться с __END__
маркер при включении или около того.
Как мне с этим справиться, кроме как переместить мои шаблоны в файлы шаблонов?
1 ответ
Из документов:
Встроенные шаблоны, определенные в исходном файле и требующие sinatra, загружаются автоматически. Вызов
enable :inline_templates
явно, если у вас есть встроенные шаблоны в других исходных файлах.
В этом случае, когда вы используете rackup
это твое config.ru
что вызывает require 'sinatra'
и Синатра ищет в этом файле какие-либо шаблоны и не находит их. Когда вы запускаете файл приложения напрямую, Sinatra выполняет поиск tubemp.rb
для шаблонов и находит их.
Чтобы исправить это, добавьте
enable :inline_templates
на ваш tubemp.rb
файл (и любые другие исходные файлы, которые имеют встроенные шаблоны).