Развертывание приложения Sinatra на Dreamhost/Passenger с использованием пользовательских драгоценных камней

StackOverflow https://stackoverflow.com/questions/1829973

Вопрос

У меня есть приложение Sinatra, которое я пытаюсь запустить на Dreamhost, которое использует pony для отправки электронной почты.Чтобы запустить приложение в самом начале (до добавления пони), мне пришлось 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-типы, tmail) тоже не найдены!

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

Это было полезно?

Решение

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

ENV['GEM_PATH'] = xxx
Gem.clear_paths

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

Другие советы

Установите Ruby gems на Dreamhost

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

Меняем config.ru (работает для Синатры 1.0)

требуются «рубигемы»

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

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

Вот мой конфиг.ру (для Dreamhost)

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

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

Мой конфиг.ру прост:

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