在ShowNearby,我们一直在从PHP迁移到RoR 3.1,我们面临着一些问题,可能是你们之前已经解决过的问题.
我们有大量数据,我们决定将数据库分成几个可以单独处理的数据库.例如,我们的帐户,地点,日志和其他帐户被拆分为多个数据库
我们需要让迁移,固定装置,模型,以及良好的发挥,到目前为止它已经相当混乱.我们对解决方案的一些要求是可以接受的:
我们正在考虑为每个数据库设置单独的rails项目并将它们与ActiveResource连接,但我们认为这不是非常有效.你们之前有没有遇到过类似的问题?
非常感谢!!
ruby ruby-on-rails activeresource ruby-on-rails-3 rails-activerecord
是否有人可以通过定义活动模型,活动记录和活动资源之间的确切区别来帮助我.我已经做了足够的谷歌搜索,以找到确切的差异,但没有得到任何具体可以告诉他们之间的确切差异.现在他们看起来都和我一样.所以请给我一些具体的答案.
activeresource activemodel ruby-on-rails-3 rails-activerecord
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?
我有2个RESTful Rails应用程序,我正试图互相交谈.两者都是用Rails 3编写的(目前是beta3).对服务的请求将需要使用api密钥,这只是每个请求都需要的参数.我似乎无法找到有关如何执行此操作的任何信息.
您可以通过site =方法定义资源连接到的URL.应该有一个等效的query_params =方法或类似的方法.
我找到了一篇与此相关的好博客文章,它是从2008年10月开始的,因此对Rails 3来说并不完全有用.
更新:我有一个想法.小型机架中间件或金属是否可以解决这个问题?它可以直接通过请求,将其添加到api_key上.
来自不同团队的几位开发人员独立告诉我,ActiveResource是一个有缺陷的想法.我听到的最常见的批评是将它设计为具有类似ActiveRecord的界面是错误的.我也听到有关错误处理方式或吞噬方式的投诉.一个开发人员实际上创建了自己的gem来提供与ActiveResource(基于RESTful资源的模型的框架)相同的功能.
我是ActiveResource的新手,但是当我查看代码并进行实验并了解它是如何工作的时候,我很难看出阻力来自哪里.它似乎基于干净,坚实的概念.我甚至听说它太重了!但在我的检查中,我发现它轻快.
因此,关于ActiveResource的所有争议,我转向网络寻求答案.当然,必须有一堆博客文章,说明为什么应该使用ActiveResource来支持X.毕竟,我确实可以找到关于DataMapper是否优于ActiveRecord的帖子.所以我搜索过,我搜索过......没什么.没有一件事.我无法在互联网上找到任何批评ActiveResource的页面(除了对REST的全面批评).我甚至找不到建议的替代方案.它得到了Rails核心团队的支持,似乎是社区中事实上的标准.
底线:
有关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操作?
我正在尝试使用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生成的请求中剥离扩展名是否"很好"?
谢谢
我在使用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) 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) 我有几个rails应用程序将使用相同的核心模型和数据集,例如:
每个应用程序都建立在这个核心数据之上,并以不同的方式使用它.例如,我可能在另一个应用程序中有类似的东西:
在它们之间共享模型和数据的最佳方式是什么?应用程序,开发人员和类别数据对于每个应用程序都是相同的,因此我不想在每个应用程序的数据库中复制数据.
编辑:我正在考虑几个可能的解决方案:
activerecord ruby-on-rails heroku activeresource ruby-on-rails-3
activeresource ×10
rest ×4
ruby ×3
activemodel ×1
activerecord ×1
api ×1
heroku ×1
json ×1
logging ×1
xml ×1