문제

나는 Dreamhost에서 전자 메일을 보내기 위해 조랑말을 사용하는 Sinatra 앱을 가지고 있습니다. 처음에 응용 프로그램을 시작하고 실행하기 위해 (조랑말을 추가하기 전에) gem unpack rack 그리고 gem unpack sinatra 공급 업체/ 디렉토리로, 이것은 내 config.ru입니다.

require 'vendor/rack/lib/rack'
require 'vendor/sinatra/lib/sinatra'

set :run, false
set :environment, :production
set :views, "views"

require 'public/myapp.rb'
run Sinatra::Application

나는 이미했다 gem install pony 그리고 gem unpack pony (공급 업체로/). 그 후, 나는 추가를 시도했다 require 'vendor/sinatra/lib/pony' 조랑말에 대해 승객에 대해 불평하는 것만 config.ru 의존성 (마임 유형, tmail)도 발견되지 않습니다!

거기 가지다 다른 보석을 사용하고 길고 추악하고 중복되는 더 좋은 방법이 되려면 requires. 이견있는 사람?

도움이 되었습니까?

해결책

나만의 보석 경로 "어딘가"를 만드는 것이 좋습니다. config.ru처럼:

ENV['GEM_PATH'] = xxx
Gem.clear_paths

그런 다음 보석을 설치하십시오

다른 팁

Dreamhost에 Ruby Gems를 설치하십시오

http://c.kat.pe/post/installing-ruby-gems-on-dreamhost/

config.ru 변경 (Sinatra 1.0 용 작업)

'rubygems'필요

'공급 업체/sinatra/lib/sinatra.rb'필요

ENV['GEM_HOME'] = '/home/username/.gems'
ENV['GEM_PATH'] = '$GEM_HOME:/usr/lib/ruby/gems/1.8'
require 'rubygems'
Gem.clear_paths

disable :run, :reload

set :environment, :production

require 'yourapp'
run Sinatra::Application

그것이 누군가를 돕기를 바랍니다.

나는 내 시나트라를 위해 조랑말과 다른 많은 보석을 사용하고 있습니다. 그것은 당신에게도 잘 작동해야합니다. 구성에 추가 해야하는 두 줄 (gem_home 및 gem_path)입니다.

"Gem Install Sinatra"를 단순히 사용할 수 있다는 것을 알기 위해서는 나이가 들었고 Gem은 (시스템 디렉토리가 읽기 전용이기 때문에) 로컬 GEM 설치 디렉토리를 사용해야한다는 것을 알아 낼 것입니다. 현재로서는 특별한 환경을 전혀 설정할 필요가없는 것 같습니다. 그것은 $ home/.gem을 로컬 보석 경로로 사용하고 모든 것이 효과가 있습니다. '공급 업체/물건'이 필요하지 않습니다. 보석에 의해 설치된 이진을 실행하기 위해 $ home/.gem/ruby/1.8/bin을 내 경로에 추가해야한다는 것을 알았습니다.

여기 내 config.ru (dreamhost for dreamhost)가 있습니다.

## Passenger should set RACK_ENV for Sinatra
require 'test'
set :environment, :development
run Sinatra::Application

나중에 편집 : 이것은 모두 훌륭하고 괜찮지 만 승객은 처음에 일이 시작될 때 내 보석을 찾을 수 없습니다..

내 config.ru는 다음과 같이 간단합니다.

require 'rubygems'
require 'vendor/sinatra/lib/sinatra.rb'
require 'app.rb'

및 app.rb 헤드 :

require 'yaml'
require 'haml'
require 'ostruct'
require 'date'
require 'pp'

module FlytoFB
    log = File.new("sinatra.log", "a")
    STDOUT.reopen(log)
    STDERR.reopen(log)

    configure do

            enable :logging, :dump_errors
            set :app_file, __FILE__
            set :reload, true
            set :root, File.dirname(__FILE__)
            set :environment, :production
            set :env, :production
            set :run, false

            set :raise_errors, true
      set :public, 'public'

            error do
                    e = request.env['sinatra.error']
                    puts e.to_s
                    puts e.backtrace.join("\n")
                    "Application Error!"
            end

            not_found do
              "Page not found!"
      end
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top