簡體   English   中英

Rubygems安裝后無法直接找到sinatra

[英]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​​gems”
  • 修改$:
  • 安裝缺少的寶石

在要運行應用程序的服務器上,而不只是ruby app ,您將運行bundle exec ruby app

暫無
暫無

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

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