设计不允许活动资源访问服务

时间:2011-11-11 13:06:48

标签: ruby ruby-on-rails-3

在我的应用程序中,有两个文件夹,一个用于rails应用程序,另一个用于ruby应用程序。在ruby文件夹中,我创建了一个ruby文件,其中我编写了代码来访问使用活动资源的rails应用程序中存在的某个模型。 示例代码如下所示:

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 Server上,我得到以下结果:

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 个答案:

答案 0 :(得分:3)

经过长时间搜索上述主题,我发现了这个:

在config / initializers / devise.rb中,我添加了以下行:

require 'active_resource'
config.http_authenticatable = true

这让我可以获取数据。