标签: activeresource

连接Rails 3.1与多个数据库

在ShowNearby,我们一直在从PHP迁移到RoR 3.1,我们面临着一些问题,可能是你们之前已经解决过的问题.

我们有大量数据,我们决定将数据库分成几个可以单独处理的数据库.例如,我们的帐户,地点,日志和其他帐户被拆分为多个数据库

我们需要让迁移,固定装置,模型,以及良好的发挥,到目前为止它已经相当混乱.我们对解决方案的一些要求是可以接受的:

  • 一个模型应该与一个数据库中的一个表相关.
  • rake db:drop - 应该删除我们在database.yml中指定的所有数据库env
  • rake db:create - 应该创建我们在database.yml中指定的所有数据库环境
  • rake db:migrate - 应该运行迁移到各种数据库
  • rake db:test - 应该抓住fixture并将它们放入各种数据库和测试单元/功能/等

我们正在考虑为每个数据库设置单独的rails项目并将它们与ActiveResource连接,但我们认为这不是非常有效.你们之前有没有遇到过类似的问题?

非常感谢!!

ruby ruby-on-rails activeresource ruby-on-rails-3 rails-activerecord

77
推荐指数
4
解决办法
5万
查看次数

活动模型,活动记录和活动资源之间的区别

是否有人可以通过定义活动模型,活动记录和活动资源之间的确切区别来帮助我.我已经做了足够的谷歌搜索,以找到确切的差异,但没有得到任何具体可以告诉他们之间的确切差异.现在他们看起来都和我一样.所以请给我一些具体的答案.

activeresource activemodel ruby-on-rails-3 rails-activerecord

50
推荐指数
3
解决办法
1万
查看次数

如何记录ActiveResource使用的URL?

Rails ActiveResource很棒......除了一件事:据我所知,没有办法看到它在幕后使用的是什么URL.例如,假设我有一个名为Issue的ActiveResource,用于myIssues.com/issues.xml上的web服务.如果我做:

Issue.find(:all, :params => {:page => 2})
Run Code Online (Sandbox Code Playgroud)

我希望ActiveResource可以调用:

myIssues.com/issues.xml?page=2
Run Code Online (Sandbox Code Playgroud)

......但我实际上并不知道.据我所知,ActiveResource可能已经决定它不喜欢单词"page",所以它实际上使用:

myIssues.com/issues.xml?mod_page=2
Run Code Online (Sandbox Code Playgroud)

这使调试变得困难.现在我有一种情况,如果我转到我认为 ActiveResource正在使用的URL ,它可以正常工作.但是,当我实际使用ActiveResource时,它不起作用.看到它的GETing会对此非常有帮助,所以...

有没有人知道记录(或以其他方式输出;如果有一些资源,也可以很好地工作的方法)的方法,ActiveResource用来做它的东西的URL?

logging ruby-on-rails activeresource

22
推荐指数
2
解决办法
6545
查看次数

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

我有2个RESTful Rails应用程序,我正试图互相交谈.两者都是用Rails 3编写的(目前是beta3).对服务的请求将需要使用api密钥,这只是每个请求都需要的参数.我似乎无法找到有关如何执行此操作的任何信息.

您可以通过site =方法定义资源连接到的URL.应该有一个等效的query_params =方法或类似的方法.

我找到了一篇与此相关的好博客文章,它是从2008年10月开始的,因此对Rails 3来说并不完全有用.

更新:我有一个想法.小型机架中间件或金属是否可以解决这个问题?它可以直接通过请求,将其添加到api_key上.

ruby ruby-on-rails activeresource ruby-on-rails-3

20
推荐指数
2
解决办法
9713
查看次数

ActiveResource是否存在根本缺陷?

来自不同团队的几位开发人员独立告诉我,ActiveResource是一个有缺陷的想法.我听到的最常见的批评是将它设计为具有类似ActiveRecord的界面是错误的.我也听到有关错误处理方式或吞噬方式的投诉.一个开发人员实际上创建了自己的gem来提供与ActiveResource(基于RESTful资源的模型的框架)相同的功能.

我是ActiveResource的新手,但是当我查看代码并进行实验并了解它是如何工作的时候,我很难看出阻力来自哪里.它似乎基于干净,坚实的概念.我甚至听说它太重了!但在我的检查中,我发现它轻快.

因此,关于ActiveResource的所有争议,我转向网络寻求答案.当然,必须有一堆博客文章,说明为什么应该使用ActiveResource来支持X.毕竟,我确实可以找到关于DataMapper是否优于ActiveRecord的帖子.所以我搜索过,我搜索过......没什么.没有一件事.我无法在互联网上找到任何批评ActiveResource的页面(除了对REST的全面批评).我甚至找不到建议的替代方案.它得到了Rails核心团队的支持,似乎是社区中事实上的标准.

底线:

有关ActiveResource的争议吗?如果是这样,辩论的本质是什么?还有替代品吗?

rest ruby-on-rails activeresource

17
推荐指数
2
解决办法
2789
查看次数

如何使用浅嵌套路由的ActiveResource?

我有一个Rails应用程序,其公司资源具有嵌套资源 Employee.我正在使用浅层路由,所以要操纵Employee,我的路由是:

GET     /employees/1
PUT     /employees/1
DELETE  /employees/1
POST    /companies/1/employees
Run Code Online (Sandbox Code Playgroud)

如何使用ActiveResource创建,读取,更新和销毁员工?

要创建员工,我可以使用:

class Employee < ActiveResource::Base
  self.site = "http://example.com/companies/:company_id"
end
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试做:

e=Employee.find(1, :params => {:company_id => 1})
Run Code Online (Sandbox Code Playgroud)

我得到404,因为在使用浅路由时未定义route/companies /:company_id/employees /:id.

要阅读,编辑和删除员工,我可以使用:

class Employee < ActiveResource::Base
  self.site = "http://example.com"
end
Run Code Online (Sandbox Code Playgroud)

但由于缺乏公司外部路线,似乎没有办法创建新的员工.

一种解决方案是定义单独的CompanyEmployee和Employee类,但这似乎过于复杂.

如何在ActiveResource中使用单个Employee类来执行所有四个CRUD操作?

rest activeresource

15
推荐指数
2
解决办法
6368
查看次数

从ActiveResource请求中删除.xml扩展名

我正在尝试使用ActiveResource来使用来自第三方API的xml数据.我可以使用RESTClient应用程序成功进行身份验证和发出请求.我编写了我的应用程序,当我提出请求时,我收到404错误.我补充说:

ActiveResource::Base.logger = Logger.new(STDERR) 
Run Code Online (Sandbox Code Playgroud)

到我的development.rb文件并找出问题所在.API使用xml数据响应不以xml结尾的请求.EG,这适用于RESTClient:

https://api.example.com/contacts
Run Code Online (Sandbox Code Playgroud)

但ActiveResource正在发送此请求

https://api.example.com/contacts.xml
Run Code Online (Sandbox Code Playgroud)

无论如何,从ActiveResource生成的请求中剥离扩展名是否"很好"?

谢谢

xml api rest ruby-on-rails activeresource

14
推荐指数
4
解决办法
3179
查看次数

Rails无法通过ActiveResource保存嵌套资源

我在使用ActiveResource来保存具有嵌套资源的模型时遇到问题:我可以加载并保存非嵌套资源而没有任何问题,我可以加载资源加上其嵌套资源,但保存资源失败.对于我来说,REE 1.8.7/Rails 2.3.9和Ruby 1.9.2-p0/Rails 3.0.2会出现此问题.以下示例来自Rails 3/AR 3.

我的示例应用程序中有两个模型:

  • 财富
  • 接口

资产有许多接口,接口属于资产.

的routes.rb

Rails3Testapp::Application.routes.draw do
 resources :interfaces
 resources :assets
end
Run Code Online (Sandbox Code Playgroud)

相关的AssetController操作

  def index
    @assets = Asset.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @assets, :include => [ :interfaces ] }
    end
  end

  def show
    @asset = Asset.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @asset, :include => [ :interfaces ] }
    end
  end

  def update
    @asset = Asset.find(params[:id])

    respond_to do |format|
      if @asset.update_attributes(params[:asset]) …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails activeresource

13
推荐指数
2
解决办法
8758
查看次数

如何使用ruby的ActiveResource来使用JSON格式?

ActiveRecord引入了对其默认JSON输出格式的更改.它来自

{ "user": { some_junk } }
Run Code Online (Sandbox Code Playgroud)

{ some_junk }
Run Code Online (Sandbox Code Playgroud)

ActiveResource显然已经跟随他们的领先,期望消耗JSON

{ some_junk }
Run Code Online (Sandbox Code Playgroud)

我正在拼命地使用一个发出的RESTful Web服务

{ "user": { some_junk } }
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉我的ActiveResource :: Base类这样做?这是我的代码.

class User < ActiveResource::Base
    self.site = "http://example.com/"
    self.format = :json
end
Run Code Online (Sandbox Code Playgroud)

更新:我现在放弃ActiveResource,除非有人知道答案; 与此同时,我能够实现我想要的GET

require 'httparty' # sudo gem install httparty
result = HTTParty.get('http://foo.com/bar.json', headers => { "Foo" => "Bar"})
# result is a hash created from the JSON -- sweet!
Run Code Online (Sandbox Code Playgroud)

ruby rest json activeresource

12
推荐指数
1
解决办法
7137
查看次数

在不同的Rails应用程序之间共享ActiveRecord模型和数据的最佳方式?

我有几个rails应用程序将使用相同的核心模型和数据集,例如:

  • 应用
  • 开发商
  • 分类

每个应用程序都建立在这个核心数据之上,并以不同的方式使用它.例如,我可能在另一个应用程序中有类似的东西:

  • 活动
  • 用户
  • 应用(共享)
  • 开发人员(共享)
  • 分类(共享)

在它们之间共享模型数据的最佳方式是什么?应用程序,开发人员和类别数据对于每个应用程序都是相同的,因此我不想在每个应用程序的数据库中复制数据.

编辑:我正在考虑几个可能的解决方案:

  • Rails引擎(可以解决不同应用程序中的重复模型问题,但不会解决共享数据问题)
  • 使用ActiveResource访问核心数据(解决共享数据,但不解决共享模型问题)

activerecord ruby-on-rails heroku activeresource ruby-on-rails-3

12
推荐指数
1
解决办法
7384
查看次数