Tag: activeresource

ActiveResource +缓存

我正在构建一个应用程序,它通过带有ActiveResource的api来使用模型。 我注意到了 @resource ||= @resource.do a query 不起作用,即如果我在我的控制器中放了类似的东西,我的应用程序仍然会查询api。 因此,我没有使用ActiveRecord的内置缓存。 是时候扩大我的知识和技能基础了。 我找到了这个: http : http : //injectisforwizards.com/blog/read-through-caching-of-activeresource/ ,虽然我还不理解这个100%,但是对于那些执行.find的基于控制器的查询,这似乎有效。 但不是我有任何自定义查询,例如: @current_resource ||= Resource.get(:resource_all, :by_account=>@current_account.account_key) (命中自定义控制器并运行范围,返回集合) 我正在研究这个问题,我会发现发生了什么,但我很好奇是否有人可以告诉我更简单的术语是什么,我可以做些什么来平滑ActiveResource中的缓存更像ActiveRecord,如何我可以定制这个以缓存所有查询等。任何事情都会有所帮助。 编辑: 我发现了这个: https : //github.com/Ahsizara/cached_resource看起来很有前景,但它是新的(并在上面建立了链接)….值得注意的是它似乎没有处理任何类型的集合,但是一个资源很好地查找/缓存。

使用没有Rails的ActiveResource

嗨,我正在开发一个Rails应用程序,通过ActiveResource公开一些方法。 我想通过一个简单的远程ruby脚本访问这些资源。 我想知道是否可以在没有Rails的情况下使用ActiveResource。

Unfuddle API获取帐户信息

我正在尝试使用ActiveResource从Unfuddle API获取帐户信息 url是http://mydomain.unfuddle.com/api/v1/account 这是我的ActiveResource类 class Account < ActiveResource::Base self.collection_name = "account" self.site = "https://mydomain.unfuddle.com/api/v1" self.user = "me" self.password = "pass" end 如果我尝试使用Account.all获取我的帐户信息,我将获得一个空数组,但如果我尝试这个 require ‘net/https’ UNFUDDLE_SETTINGS = { :subdomain => ‘mydomain’, :username => ‘me’, :password => ‘pass’, :ssl => true } http = Net::HTTP.new(“#{UNFUDDLE_SETTINGS[:subdomain]}.unfuddle.com”,UNFUDDLE_SETTINGS[:ssl] ? 443 : 80) if UNFUDDLE_SETTINGS[:ssl] http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE […]

覆盖/修改Rails类(ActiveResource)

我一直在努力解决ActiveResource的问题:当一个主机名解析一个ActiveResource请求,但另一端没有服务器返回信息时,ActiveResource的超时值不起作用。 请求只是挂起。 在查看了ActiveResource代码之后,我意识到这是因为底层的Net:Http对象只设置了一个超时值:read_timeout。 Net:Http库将其定义为“等待读取一个块(通过一次读取(2)调用)”的秒。 Net:Http lib还定义了另一个超时值open_timeout,定义为“等待直到连接打开的秒数”。 我不确定为什么默认情况下没有设置open_timeout并且在ActiveResource类上设置了超时值,但是在修改ActiveResource :: Connection类以在http对象上包含open_timeout之后,我的问题就解决了! 我是rails的新手,所以我不确定在我的项目中实际进行修改的最佳方法; 我不想只更改gem目录中的代码。 是否有适当的方法在rails项目中进行这些修改? 我已经看到可以从/ vendor文件夹加载rails类,但它们是否都必须在那里才能工作? 我开始创建ActiveResource :: Base和ActiveResource :: Connection类的子类,但似乎有一种更简单的方法可以做到这一点,因为创建Net:Http实例的函数是私有的…任何想法?

Rails 4升级后,未定义的方法`标记’格式化程序错误

我按照Ruby Screencast指南从Rails 3.2升级到Rails 4。 我的测试正在运行并且服务器启动,但是当我发送请求时收到错误: ERROR NoMethodError: undefined method `tagged’ for # /home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/activesupport-4.0.0/lib/active_support/tagged_logging.rb:67:in `tagged’ /home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/railties-4.0.0/lib/rails/rack/logger.rb:21:in `call’ /home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/quiet_assets-1.0.2/lib/quiet_assets.rb:18:in `call_with_quiet_assets’ /home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/actionpack-4.0.0/lib/action_dispatch/middleware/request_id.rb:21:in `call’ /home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/methodoverride.rb:21:in `call’ /home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/runtime.rb:17:in `call’ /home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/activesupport-4.0.0/lib/active_support/cache/strategy/local_cache.rb:83:in `call’ /home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/actionpack-4.0.0/lib/action_dispatch/middleware/static.rb:64:in `call’ /home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/railties-4.0.0/lib/rails/engine.rb:511:in `call’ /home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/railties-4.0.0/lib/rails/application.rb:97:in `call’ /home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/lock.rb:17:in `call’ /home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/content_length.rb:14:in `call’ /home/mahoni/.rvm/gems/ruby-2.0.0-p195/gems/rack-1.5.2/lib/rack/handler/webrick.rb:60:in `service’ /home/mahoni/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service’ /home/mahoni/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run’ /home/mahoni/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread’ 我已经查看了代码,对我来说没有意义。 它调用logger.tagged 。 变量logger后面的对象不是记录器,而是Formatter对象。 这很奇怪。 知道是什么原因引起的吗? 到目前为止我: 删除了我的Gemfile.lock gem […]

主动资源响应,如何获取它们

我有一个活动资源,我查询数据。 它返回记录,计数,无论我要求什么。 例如:product = Product.find(123) 响应头应该包含一个自定义属性,比如“HTTP_PRODUCT_COUNT = 20”,我想检查响应。 IRB最有效的方法是什么? 我没有奢侈的Rails或其他可能提供底层响应的框架。 我是否需要使用monkeypatched调用或其他东西攻击Net :: HTTP或ActiveResource本身?

使用ActiveResource在Rails中使用非REST API

我正在编写一个使用非REST API的客户端(即GET site.com/gettreasurehunts),这要求我将请求的HTTP主体中的所有参数(甚至资源ID)指定为自定义XML文档。 我想使用Rails和ActiveResource,但我不得不重写几乎所有的ActiveResource方法。 是否有另一种更精致的方法来实现相同的结果,甚至使用另一个(Ruby)框架?

主动资源抱怨期望哈希

我正在使用活动资源从api获取数据并显示它, 我的控制器model.rb有 class Thr::Vol::Dom < ActiveResource::Base class < ‘/vv/test/domains/2013-06-25T05:03Z’) x end end 当我调用此Thr :: Vol :: Dom.find方法时,它返回以下错误: ArgumentError: expected an attributes Hash, got [“0.0.0.0”, “1.1.1.1”, “2.2.2.2”, “3.3.3.3”, “4.4.4.4”] 预计api会提供类似这样的东西 {“abs.com”:[“0.0.0.0”, “1.1.1.1”, “2.2.2.2”, “3.3.3.3”, “4.4.4.4”]} 我做的电话。 API返回正确的哈希值,但我认为活动资源无法正确读取它,它直接读取哈希值的键值对中的值。 我想解决这个“ArgumentError”错误,我想在视图中显示返回的哈希的内容。

将api密钥添加到ActiveResource中的每个请求

我有两个RESTful Rails应用程序,我正试图互相交谈。 两者都是用Rails 3编写的(目前是beta3)。 对服务的请求将需要使用api密钥,这只是每个请求都需要的参数。 我似乎无法找到有关如何执行此操作的任何信息。 您可以通过site =方法定义资源连接到的URL。 应该有一个等效的query_params =方法或类似方法。 我找到了一篇与此相关的好博客文章,它是从2008年10月开始的,因此对Rails 3来说并不完全有用。 更新 :我有一个想法。 小型机架中间件或金属是否可以解决这个问题? 它可以直接通过请求,将其添加到api_key上。

HTTP POST中的多个键/值对,其中键是相同的名称

我正在开发一个接受远程客户端数据的API,其中一些HTTP POST中的密钥几乎可以作为一个数组。 在英语中,这意味着我的服务器上有一个名为“class”的资源。 在这个意义上的一个类是学生所在的类型和教师教育的类型。当用户提交HTTP POST为他们的应用程序创建一个新类时,许多键值对看起来像: student_name:鲍勃史密斯 student_name:简史密斯 student_name:克里斯史密斯 什么是在客户端处理这个问题的最佳方法(假设客户端是cURL或ActiveResource,无论如何……)如果我的服务器是Ruby on Rails应用程序,那么在服务器端处理这个问题的方法是什么? 需要一种方法来允许具有相同名称且没有任何命名空间冲突或数据丢失的多个密钥。 我的要求必须是POST数据是urlencoded键/值对。