Я новичок в рубине, изучая Синатру. При создании сайта Sinatra, требуя 'sinatra'
, и настройка маршрутов непосредственно в нем довольно проста и достаточно хорошо документирована, создавая приложение, требуя 'sinatra/base'
и записывая класс, который наследует от 'Sinatra::Base
', хотя все еще относительно легко, очень плохо документирован (возможно, потому, что это довольно недавняя особенность Sinatra).
И это именно то, что я делаю. У меня не слишком много проблем с частью Sinatra, однако у меня проблемы с работой на стойке/тонкой/серверной части. По-видимому, есть два способа развертывания приложения: использование самой Sinatra (с использованием метода run!
) и использование файла-стойки (обычно config.ru
).
Использование метода Sinatra run!
чрезвычайно интуитивно понятен и работает как шарм, но, по-видимому, он не работает, если я хочу развернуть свое приложение на heroku. По сути, почти все приложения Sinatra, с которыми я столкнулся в GitHub, используют файл config.ru
.
Использование файла в стойке может быть одинаково интуитивно понятным, но я не могу понять, как передать параметры из приложения Sinatra на сервер (ir: port). Я попытался объединить параметры в массив настроек по умолчанию:
MyApp::App.default_options.merge!(
:run => false,
:env => :production,
:port => 4567
)
run MyApp::App
добавив параметры непосредственно в приложение:
MyApp::App.set :port, 4567
MyApp::App.set :run, false
MyApp::App.set :env, :production
run MyApp::App
установив параметры из класса приложения:
module MyApp
class App < Sinatra::Base
set :port, 4567
set :run, false
set :env, :production
# ...
# config.ru
require 'app'
run MyApp::App
Все вышеприведенные методы не удалось, либо путем отображения сообщений об ошибках, либо просто не принимая во внимание какие-либо варианты. Итак, есть ли способ передать параметры rawn/thin/the sever через приложение Sinatra при использовании файла для проверки? Или параметры в вопросах должны передаваться непосредственно в rackup/thin/the sever через параметры командной строки?
Как ссылка на проблему, вот небольшое приложение Sinatra, которое я создаю: https://github.com/AzizLight/Wiki/