Как мне указать версию тонкого веб-сервера, которую я хочу использовать для своего приложения на Ruby? - Синатра - PullRequest
1 голос
/ 24 октября 2011

У меня установлены следующие версии:

 thin (1.2.11, 1.2.7, 1.2.2)

Но я всегда хочу использовать версию 1.2.2

Как мне указать?

Использую Sinatra.

Вот так я управляю своим сайтом:

ruby app/website/website.rb

В конце концов я хочу иметь возможность использовать Thin точно так:

thin start -R apps/website/website.ru -d так как мне указать версию Thin, которая также будет использоваться там?

Когда я запускаю первую команду, я вижу это:

== Sinatra/0.9.2 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.2.11 codename Bat-Shit Crazy)

Так что я знаю, что она не используетсяправильная версия 1.2.2.

Ответы [ 2 ]

3 голосов
/ 24 октября 2011

Вызов приложения Sinatra напрямую

При запуске приложения Sinatra напрямую (например, с ruby app/website/website.rb), чтобы указать, какой веб-сервер использовать в качестве встроенного сервера, вы используете :server опция конфигурации (Thin будет использоваться по умолчанию, если он установлен):

set :server, :thin

Чтобы указать конкретную версию для использования, вам необходимо указать, какой гем загружен.Наилучший способ сделать это, вероятно, использовать Bundler с Gemfile, а затем вызвать require 'bunlder/setup' на ранней стадии вашего приложения.

Если вы не используете Bundler, вы можетеУкажите, какую версию гема загружать с помощью метода gem в вашем приложении:

gem 'thin', '1.2.2'

(сделайте это после require выделения рубинов, если вы используете Ruby 1.8.7 или более ранней версии).

Начиная с thin start

Если вы вызываете thin напрямую с файлом config.ru, вы можете указать нужную версию в командной строке:

thin _1.2.2_ start -R config.ru

(это то же самое для любого двоичного файла gem: используйте _x_ в качестве первого аргумента, и будет использоваться версия x)

В этом случае я думаю, что вынеобходимо явно использовать параметр -R - похоже, что Thin не может автоматически найти файл config.ru, как при простом использовании thin start.

Если вы указали, какую версию использовать в вашемфайл приложения, вам нужно убедиться, что вы указали ту же версию в командной строке, в противном случае вы получите такие ошибки, как can't activate thin-1.2.2, already activated thin-1.2.11 (Gem::LoadError).

Если вы решите использовать Bundler, то при вызове bundle exec thin start будут использованы версии в Gemfile.

1 голос
/ 24 октября 2011

Если вы используете Bundler, вы можете указать версию в своем Gemfile, а затем использовать bundle exec thin ... для запуска вашего сервера.Вы также можете использовать полный путь к соответствующему исполняемому файлу gem (который вы можете получить, используя bundle show <gemname>).

Если у вас нет Bundler, вы можете использовать gem which <gemname>.

Вне зависимости от того, что вы используете, вы можете выполнить thin таким образом (хотя и довольно хакерски):

$ `bundle show thin`/bin/thin start

или:

$ `gem which thin`/../../bin/thin start

Я думаю, вы также можете использовать замены Bash или жестко закодироватьпуть.

...