#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
Это позволило мне извлекать данные.