2016-02-29 3 views
1

У меня есть небольшое модульное приложение Sinatra, которое я создаю, чтобы выступать в качестве интерфейса для отдельного REST API. Все делалось плавно, пока я не добавил HTTParty (чтобы делать запросы к моему API), и теперь никакая страница не будет загружаться.HTTParty crashing Sinatra

Сервер API был запущен на локальном порту 9393, но ошибка сохраняется, даже когда я закрываю этот сервер. . (И когда я закомментировать один HTTParty запрос у меня есть в моих маршрутах

Вот мой app.rb файл:

ENV["RACK_ENV"] ||= "development" 

require 'bundler' require 'sinatra/base' require 'sinatra/contrib/all' require 'json' require 'sinatra/strong-params' require 'haml' require 'sinatra/partial' require 'sass' 
# require 'httparty' 

require 'pry' 


Bundler.setup Bundler.require(:default, ENV["RACK_ENV"].to_sym) 

# DATABASE CONFIG 
# dbconfig = YAML.load(File.read('./config/database.yml')) 
# ActiveRecord::Base.establish_connection dbconfig["#{settings.environment}"] 

# Base URL for API calls API_BASE = 'http://localhost:9393' 

class PantryApp < Sinatra::Base include HTTParty register Sinatra::Partial 

    set :root, File.dirname(__FILE__) enable :sessions 

    # set folder for templates to ../views, but make the path absolute set :views, File.expand_path('../app/views', __FILE__) 

    # don't enable logging when running tests configure :production, :development do 
    enable :logging end 

    # will be used to display 404 error pages not_found do 
    erb :not_found end 

    get '/' do 
    haml :login end 

    get '/login' do 
    haml :login end 

    post '/login' do 
    # api_token = HTTParty.post(API_BASE + '/token', query: {email: params['email'], password: params['password']}) 
    binding.pry 
    haml :user_pantry end 

    # REQUIRE ALL APP FILES Dir["./app/**/*.rb"].each { |f| require f } 

end 

И когда я пытаюсь идти к/логин, я получаю:

Boot Error 

Something went wrong while loading config.ru 

Errno::ECONNREFUSED: Connection refused - connect(2) for nil port 80 

/Users/rileypants/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/net/http.rb:879:in `initialize' /Users/rileypants/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/net/http.rb:879:in `open' /Users/rileypants/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/net/http.rb:879:in `block in connect' /Users/rileypants/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/timeout.rb:73:in `timeout' /Users/rileypants/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/net/http.rb:878:in `connect' /Users/rileypants/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/net/http.rb:863:in `do_start' /Users/rileypants/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/net/http.rb:852:in `start' /Users/rileypants/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/net/http.rb:1375:in `request' /users/rileypants/.rvm/gems/[email protected]_ui/gems/httparty-0.13.7/lib/httparty/request.rb:117:in `perform' /users/rileypants/.rvm/gems/[email protected]_ui/gems/httparty-0.13.7/lib/httparty.rb:545:in `perform_request' /users/rileypants/.rvm/gems/[email protected]_ui/gems/httparty-0.13.7/lib/httparty.rb:476:in `get' /Users/rileypants/dev/capstone/ui/app.rb:46:in `<class:PantryApp>' /Users/rileypants/dev/capstone/ui/app.rb:26:in `<top (required)>' config.ru:1:in `require' config.ru:1:in `block in inner_app' /users/rileypants/.rvm/gems/[email protected]_ui/gems/rack-1.6.4/lib/rack/builder.rb:55:in `instance_eval' /users/rileypants/.rvm/gems/[email protected]_ui/gems/rack-1.6.4/lib/rack/builder.rb:55:in `initialize' config.ru:1:in `new' config.ru:1:in `inner_app' /users/rileypants/.rvm/gems/[email protected]_ui/gems/shotgun-0.9.1/lib/shotgun/loader.rb:113:in `eval' /users/rileypants/.rvm/gems/[email protected]_ui/gems/shotgun-0.9.1/lib/shotgun/loader.rb:113:in `inner_app' /users/rileypants/.rvm/gems/[email protected]_ui/gems/shotgun-0.9.1/lib/shotgun/loader.rb:103:in `assemble_app' /users/rileypants/.rvm/gems/[email protected]_ui/gems/shotgun-0.9.1/lib/shotgun/loader.rb:86:in `proceed_as_child' /users/rileypants/.rvm/gems/[email protected]_ui/gems/shotgun-0.9.1/lib/shotgun/loader.rb:31:in `call!' /users/rileypants/.rvm/gems/[email protected]_ui/gems/shotgun-0.9.1/lib/shotgun/loader.rb:18:in `call' /users/rileypants/.rvm/gems/[email protected]_ui/gems/shotgun-0.9.1/lib/shotgun/favicon.rb:12:in `call' /users/rileypants/.rvm/gems/[email protected]_ui/gems/rack-1.6.4/lib/rack/urlmap.rb:66:in `block in call' /users/rileypants/.rvm/gems/[email protected]_ui/gems/rack-1.6.4/lib/rack/urlmap.rb:50:in `each' /users/rileypants/.rvm/gems/[email protected]_ui/gems/rack-1.6.4/lib/rack/urlmap.rb:50:in `call' /users/rileypants/.rvm/gems/rub[email protected]_ui/gems/rack-1.6.4/lib/rack/builder.rb:153:in `call' /users/rileypants/.rvm/gems/[email protected]_ui/gems/rack-1.6.4/lib/rack/handler/webrick.rb:88:in `service' /Users/rileypants/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service' /Users/rileypants/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run' /Users/rileypants/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread' 

и config.ru просто:

require File.dirname(__FILE__) + '/app.rb' 

map('/users') { run UsersController } 
map('/') { run PantryApp } 

Он смотрит на меня как-то о «получить» от моего первый маршрут в app.rb приводит к httparty вместо Sinatra, но я не знаю, почему и что делать, чтобы исправить это.

ответ

1

Я ответил на свой вопрос, но я хочу оставить это здесь, если это полезно для кого-то другого.

В этом случае мне не нужно было использовать include HTTParty в классе, а скорее требовать его в верхней части. Я думаю, что использование include было тем, что смешивало запрос get.