Dmi*_*eev 9 ruby-on-rails activeresource
我正在寻找使用ActiveResource,但现在面临一个我无法弄明白的问题(现在正在网上搜索解决方案的几天).
所以我有一个身份验证应用程序http://localhost:80和端口上的客户端:85
我有一个User模型及其控制器,它遵循REST架构,并设置为响应xml调用.
这是我在我的auth应用程序中的内容:
车型/ User.rb
class User < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)
*控制器/ users_controller.rb*
class UsersController < ApplicationController
respond_to :html, :xml, :js
def index
@users = User.find :all
respond_with @users
end
def show
@user = User.find(params[:id])
respond_with @user
end
.
.
.
end
Run Code Online (Sandbox Code Playgroud)
我有一个从活动资源扩展的类,如下所示:
车型/ user.rb
class User < ActiveResource::Base
self.site = "http://localhost:80"
end
Run Code Online (Sandbox Code Playgroud)
以下是我尝试使用它的方法:*controllers/sessions_controller.rb*
class SessionController < ApplicationController
def home
@user = User.find(:all)
end
end
Run Code Online (Sandbox Code Playgroud)
什么可能出错,对吧?
但后来我收到以下错误:
在2013-09-02 08:33:44开始获取"/"for 127.0.0.1 +1200
由SessionsController 处理#home 为HTML已完成500内部服务器错误
3msNameError(未初始化的常量ActiveResource):
app/models/user.rb:1:in home'<top (required)>'
app/controllers/sessions_controller.rb:4:in呈现
/usr/lib/ruby/gems/1.9.1/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/_source.erb(1.6ms
)呈现/usr/lib/ruby/gems/1.9 .1/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/_trace.erb
(2.7ms )呈现/usr/lib/ruby/gems/1.9.1/gems/actionpack-4.0.0/ lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb
(2.2ms)呈现/usr/lib/ruby/gems/1.9.1/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/diagnostics救援/布局中的.erb(37.4ms)
我在用:
ruby 1.9.3p0(2011-10-30修订版33570)[i686-linux]安装了
Rails 4.0.0
activeresource(4.0.0)gem
我怎么可能做错了?
ActiveResource是否可能无法连接,localhost:80因此无法初始化?
编辑:
完成rvm使用2.0.0所以现在ruby版本是:ruby 2.0.0p247(2013-06-27修订版41674)[i686-linux]
编辑:
RubyGems环境:
- RUBYGEMS版本:2.0.7
- RUBY版本:1.9.3(2011-10-30 patchlevel 0)[i686-linux]
- 安装目录:/usr/lib/ruby/gems/1.9.1
- RUBY EXECUTABLE :/usr/bin/ruby1.9.1
- EXECUTABLE DIRECTORY:/ usr/bin
- RUBYGEMS平台:
- ruby
- x86-linux
- GEM路径:
- /usr/lib/ruby/gems/1.9.1
- /home/dmitry/.gem/ruby/1.9.1
- GEM配置:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- 远程来源:
- https://rubygems.org/
Dmi*_*eev 17
我终于想通了......
出于某种原因(如果有人可以发布解释原因,我将不胜感激)我必须在user.rb文件中手动要求活动资源.
使其工作的正确代码应该是:
require 'active_resource'
class User < ActiveResource::Base
self.site = "http://localhost:80"
end
Run Code Online (Sandbox Code Playgroud)
PS
谢谢你zeantsoi的评论,这些已经让我进入搜索这个宝石未被加载的原因.
Mik*_*key 16
在你Gemfile添加activeresource gem时如下:
gem 'activeresource', require: 'active_resource'
Run Code Online (Sandbox Code Playgroud)
这将使其表现得如此 - 无需在每个activeresource模型的开头都需要它.
小智 10
ActiveResource应该加载到您的config/application.rb文件中:
# config/application.rb
# Pick the frameworks you want:
require 'active_resource/railtie'
require "action_controller/railtie"
...
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您将能够ActiveResource稍后在同一文件中进行配置,例如:
# config/application.rb
module TestClient
class Application < Rails::Application
config.active_resource.include_format_in_path = false
config.active_resource.site = "http://localhost:80"
...
Run Code Online (Sandbox Code Playgroud)
如果您想为所有ActiveResource模型设置一些默认选项,这很方便,当然您可以覆盖某些特定模型的任何选项:
# app/models/user.rb
class User < ActiveResource::Base
self.include_format_in_path = true # append .json at the end of url
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5193 次 |
| 最近记录: |