![](/img/trans.png)
[英]How can I start my thin server using ruby? require': cannot load such file — app (LoadError)
[英]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應用程序時(例如使用ruby app/website/website.rb
),要指定將哪個Web服務器用作內置服務器,請使用:server
configuration選項 (如果是,則默認使用Thin)安裝):
set :server, :thin
要指定要使用的特定版本,您需要控制加載哪個gem。 最好的方法是使用Bundler和Gemfile
,然后在應用程序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.