簡體   English   中英

如何指定我想用於Ruby應用程序的瘦Web服務器的版本? - Sinatra

[英]How do I specify the version of Thin web server I want to use for my Ruby app? - Sinatra

我安裝了以下版本:

 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

直接調用Sinatra應用程序

當直接運行Sinatra應用程序時(例如使用ruby app/website/website.rb ),要指定將哪個Web服務器用作內置服務器,請使用:server configuration選項 (如果是,則默認使用Thin)安裝):

set :server, :thin

要指定要使用的特定版本,您需要控制加載哪個gem。 最好的方法是使用BundlerGemfile ,然后在應用程序require 'bunlder/setup'早期調用require 'bunlder/setup'

如果您沒有使用Bundler,則可以在應用中指定要使用gem方法加載的gem版本:

gem 'thin', '1.2.2'

(如果您使用的是Ruby 1.8.7或更早版本,則 require rubygems 之后執行此操作)。

thin start

如果您使用config.ru文件直接調用thin ,則可以在命令行上指定所需的版本:

thin _1.2.2_ start -R config.ru

(對於任何gem二進制文件_x_一樣的:使用_x_作為第一個參數,將使用版本x

在這種情況下,我認為你需要明確使用-R選項 - 看起來Thin不會像簡單地使用thin start那樣自動找到config.ru文件。

如果您已指定在應用程序文件中使用哪個版本,則需要確保在命令行中指定相同的版本,否則您將收到錯誤,例如can't activate thin-1.2.2, already activated thin-1.2.11 (Gem::LoadError)

如果您決定使用Bundler,那么調用bundle exec thin start將使用Gemfile的版本。

如果使用Bundler,則可以在Gemfile中指定版本,然后使用bundle exec thin ...來啟動服務器。 您還可以使用相應gem可執行文件的完整路徑(可以使用bundle show <gemname> )。

如果你沒有Bundler,你可以使用gem which <gemname>

無論你使用哪種,你都可以像這樣執行瘦(雖然非常hacky):

$ `bundle show thin`/bin/thin start

要么:

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

我認為您也可以使用Bash替換,或者您可以對路徑進行硬編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM