Разработка, не позволяющая активному ресурсу получать доступ к службам

#ruby #ruby-on-rails-3

#ruby #ruby-on-rails-3

Вопрос:

В моем приложении есть две папки, одна для приложения rails, а другая для приложения ruby. В папке ruby я создал файл ruby, в котором я написал код для доступа к некоторой модели, которая присутствует в приложении rails с использованием active resource. Пример кода показан ниже :

active_resource_example.rb

 require 'rubygems'
require 'active_resource'

class Website < ActiveResource::Base

  self.site = "http://localhost:3000/admin/"
  self.user = "user"
  self.password = "password"

end

websites = Website.find(:all)
puts websites.inspect
  

В моем приложении rails я использовал ActiveAdmin gem, который использует devise для аутентификации. На сервере rails я получаю следующий результат :

 Started GET "/admin/websites.json" for 192.168.1.37 at 2011-11-12 14:41:06  0530
  Processing by Admin::WebsitesController#index as JSON
Completed   in 43ms
  

И на моем терминале, где я выполнил active_resource_example.rb, я получил следующую ошибку :

     user@user:~/Desktop$ ruby active_resource_example.rb
/home/user/.rvm/gems/ruby-1.9.2-p180/gems/activeresource-3.1.1/lib/active_resource/connection.rb:132:in `handle_response': Failed.  Response code = 401.  Response message = Unauthorized . (ActiveResource::UnauthorizedAccess)
    from /home/user/.rvm/gems/ruby-1.9.2-p180/gems/activeresource-3.1.1/lib/active_resource/connection.rb:115:in `request'
    from /home/user/.rvm/gems/ruby-1.9.2-p180/gems/activeresource-3.1.1/lib/active_resource/connection.rb:80:in `block in get'
    from /home/user/.rvm/gems/ruby-1.9.2-p180/gems/activeresource-3.1.1/lib/active_resource/connection.rb:218:in `with_auth'
    from /home/user/.rvm/gems/ruby-1.9.2-p180/gems/activeresource-3.1.1/lib/active_resource/connection.rb:80:in `get'
    from /home/user/.rvm/gems/ruby-1.9.2-p180/gems/activeresource-3.1.1/lib/active_resource/base.rb:894:in `find_every'
    from /home/user/.rvm/gems/ruby-1.9.2-p180/gems/activeresource-3.1.1/lib/active_resource/base.rb:806:in `find'
    from active_resource_example.rb:12:in `<main>'
user@user:~/Desktop$
  

Я попробовал это с другим приложением, в котором проверка подлинности Devise не используется с той же конфигурацией, которую я использовал в active_resource_example.rb, там я получил результат.
Отчаянно нужно какое-то решение этой проблемы.

Комментарии:

1. Ошибка указывает, что она находится в строке 11, но фрагмент кода не содержит 11 строк. Можно ли было бы опубликовать все active_resource_example.rb в виде github gist?

2. @Vincent Agnello : Не удается опубликовать active_resource_example.rb в качестве github gist. Но я отредактировал файл и опубликовал его снова… посмотрим, получится ли у вас что-нибудь из этого.

Ответ №1:

После долгого поиска по вышеупомянутой теме я нашел это:

В config/initializers/devise.rb я добавил следующие строки:

 require 'active_resource'
config.http_authenticatable = true
  

Это позволило мне извлекать данные.