[英]Rubygems can't find sinatra directly after install
我不知道為什么rubygems無法在以下代碼的require“ sinatra”行上找到sinatra。 我試圖寫紅寶石以確保已安裝sinatra。
紅寶石
$:.push("/home/xxxx/ruby/gems")
require 'rubygems'
begin
gem "sinatra"
rescue LoadError
system("gem install sinatra")
Gem.clear_paths
end
require 'sinatra'
get "/" do
"Hello, world!"
end
錯誤-在線:要求'sinatra'
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- sinatra (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
如果相關的話,我正在使用bash命令“ ruby app.rb”通過SSH運行腳本。
寶石環境返回:(其中/ home / xxxx / ruby / gems是寶石的正確位置)
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.25
- RUBY VERSION: 1.8.7 (2012-06-29 patchlevel 370) [x86_64-linux]
- INSTALLATION DIRECTORY: /home/xxxx/ruby/gems
- RUBY EXECUTABLE: /usr/bin/ruby
- EXECUTABLE DIRECTORY: /home/xxxx/ruby/gems/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /home/xxxx/ruby/gems
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- "gempath" => []
- "gem" => "--remote --gen-rdoc --run-tests"
- "rdoc" => "--inline-source --line-numbers"
- "gemhome" => "/home/xxxx/ruby/gems"
- REMOTE SOURCES:
- http://rubygems.org/
我建議使用捆綁器。
首先,在您的開發機器和服務器上gem install bundler
。
接下來,創建一個名為Gemfile的文件,其中包含以下內容:
source "https://rubygems.org"
gem "sinatra"
# add a "gem" line for any other gems your application needs
(命令bundle init
將為您創建一個框架Gemfile)。
然后,執行“捆綁安裝”以安裝gem。 這將創建一個“ Gemfile.lock”文件,該文件提供每個寶石的確切版本。 該文件將與Gemfile一起簽入版本控件。
將該代碼分發到服務器后,然后在服務器上“捆綁安裝”即可獲得安裝在服務器上的完全相同的gem。
在您的應用程序, 不要 :
在要運行應用程序的服務器上,而不只是ruby app
,您將運行bundle exec ruby app
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.