Подтвердить что ты не робот

Передача параметров для загрузки через приложение Sinatra

Я новичок в рубине, изучая Синатру. При создании сайта 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/

4b9b3361

Ответ 1

Вы намеренно передаете опции для тонкой работы в командной строке напрямую или через файл конфигурации. Просмотреть все варианты:

$ thin -h

Для производства используйте файл конфигурации:

$ thin -C thin-production.yml -R config.ru start

Вот пример файла thin-production.yml:

---
address: localhost
port: 3020
servers: 4
max_conns: 1024
max_persistent_conns: 512
timeout: 30
environment: production
pid: tmp/pids/thin-production.pid
log: log/thin-production.log
daemonize: true 

Ответ 2

Я знаю, что я воскрешаю древний вопрос здесь, но я нашел другое полезное решение, которое еще не было упомянуто. Как указано в этот учебник по вики файлу:

первая строка, начинающаяся с #\, обрабатывается так, как если бы она была параметрами, позволяя аргументы вставки в файле конфигурации.

Итак, если вы хотите установить свой хост на 0.0.0.0 и порт на 5656, вы должны добавить следующую строку в начало вашего файла config.ru:

#\ -o 0.0.0.0 -p 5656