Развертывание приложения Sinatra на Dreamhost / Passenger с пользовательскими драгоценными камнями - PullRequest
3 голосов
/ 02 декабря 2009

У меня есть приложение Sinatra, которое я пытаюсь запустить на Dreamhost, которое использует пони для отправки электронной почты. Чтобы запустить приложение в самом начале (до добавления пони), мне нужно было gem unpack rack и gem unpack sinatra в каталоге vendor /, так что это был мой 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 только для того, чтобы Пассажир пожаловался на то, что зависимостей пони (mime-types, tmail) тоже не найдено!

Там имеет , чтобы быть лучшим способом использовать другие драгоценные камни и смягчать эти длинные, уродливые, избыточные requires. Есть мысли?

Ответы [ 4 ]

4 голосов
/ 02 декабря 2009

Я бы порекомендовал создать свой собственный путь к драгоценным камням "где-то", а затем добавить его в config.ru как:

ENV['GEM_PATH'] = xxx
Gem.clear_paths

затем установите ваши драгоценные камни в этом

3 голосов
/ 03 апреля 2010

Установить Ruby Gems на Dreamhost

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

Изменить config.ru (работает для Sinatra 1.0)

требуется 'rubygems'

требуется 'vendor / 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), которые вы должны добавить в свою конфигурацию.

1 голос
/ 17 февраля 2010

Мне потребовалось много времени, чтобы найти, что вы можете просто использовать "gem install sinatra", и gem выяснит (потому что системные каталоги доступны только для чтения), что вам нужно будет использовать локальный каталог установки gem. На данный момент, похоже, нет необходимости устанавливать какие-либо особые условия вообще. Предполагается использовать $ HOME / .gem в качестве локального пути к гему, и все просто работает. Нет необходимости требовать «продавца / вещи» вообще. Я обнаружил, что должен был добавить $ HOME / .gem / ruby ​​/ 1.8 / bin к моему пути, чтобы выполнить двоичные файлы, установленные gems.

Вот мой config.ru (для Dreamhost)

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

Позднее редактирование: все это хорошо, но остается проблема: Пассажир не может найти мои драгоценные камни, когда работа первоначально запускается .

0 голосов
/ 08 января 2010

Мой config.ru просто так:

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

и app.rb head:

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
...