我有一个控制器需要在某些条件下返回404页面和状态代码.我似乎无法在Grails中找到如何做到这一点.同事推荐这种方法:
response.sendError(HttpServletResponse.SC_NOT_FOUND)
Run Code Online (Sandbox Code Playgroud)
它的效果非常好,但它并不像Grails那样.我知道Rails的render方法采用status参数,但Grails的render没有这样的功能.有什么我想念的,有什么最好的方法来完成这个?
我正在使用Ruby on Rails 3开发一个API,我想用Oauth2保护它.换句话说,我需要创建一个Oauth提供程序.是否有Rails 3的工作宝石或者可能是关于这个问题的教程?
UPDATE
我知道Rails是基于REST的,所以我觉得很奇怪,没有关于如何创建公共API并保护它的教程.有谁知道任何好的教程.优先使用oAuth.
感谢所有的帮助!!
我有一个Grails应用程序,它从xml文件加载其数据并通过罗马提供rss提要.我没有任何域类,我的应用程序没有数据源.我不希望Grails在应用程序不需要时加载内存中的hsql db.删除DataSource.groovy文件阻止我启动Web应用程序,似乎需要数据源,但如果我的应用程序不需要数据源,我还能做些什么吗?
我需要将额外的参数传递给工厂女孩以用于回调.像这样的东西(但实际上更复杂):
Factory.define :blog do |blog|
blog.name "Blah"
blog.after_create do |blog|
blog.posts += sample_posts
blog.save!
end
end
Run Code Online (Sandbox Code Playgroud)
然后使用以下内容创建它:
Factory.create(:blog, :sample_posts => [post1, post2])
Run Code Online (Sandbox Code Playgroud)
有什么想法怎么做?
我正在尝试使用redis-store作为我的Rails 3 cache_store.我还有一个初始化器/ app_config.rb,它为配置设置加载一个yaml文件.在我的初始化程序/ redis.rb中,我有:
MyApp::Application.config.cache_store = :redis_store, APP_CONFIG['redis']
Run Code Online (Sandbox Code Playgroud)
但是,这似乎不起作用.如果我做:
Rails.cache
Run Code Online (Sandbox Code Playgroud)
在我的rails控制台中,我可以清楚地看到它正在使用
ActiveSupport.Cache.FileStore
Run Code Online (Sandbox Code Playgroud)
作为缓存存储而不是redis-store.但是,如果我在application.rb文件中添加配置,如下所示:
config.cache_store = :redis_store
Run Code Online (Sandbox Code Playgroud)
它运行得很好,除了在app.rb之后加载app config初始化程序,所以我没有访问APP_CONFIG.
有没有人经历过这个?我似乎无法在初始化程序中设置缓存存储.
我在我的Rails 3.1应用程序上使用CloudFlare CDN.Cloudflare是一个在DNS级别工作的CDN.在第一次打到静态资产时,CloudFlare会从您的应用程序加载它,然后将其缓存在CDN中.从CDN而不是您的应用程序加载该资产的未来请求.
我遇到的问题是,如果将控制器缓存设置为true:
config.action_controller.perform_caching = true
Run Code Online (Sandbox Code Playgroud)
它启用了Rack :: Cache中间件.由于Rails为静态资产设置了默认缓存控制设置,因此这些资产将写入Rails.cache存储.结果,我的缓存存储(在我的情况下是redis)被填充了静态资产,其中url作为哈希键.
遗憾的是,我无法关闭静态资产缓存控制标头,而不会影响Cloudflare和我的用户的浏览器如何缓存资产.我无法关闭控制器缓存或丢失页面/操作/片段缓存.如果删除Rack :: Cache中间件,结果相同.
有没有人有任何其他想法?
更新:我在这里打开了GitHub的门票.
caching ruby-on-rails ruby-on-rails-3.1 asset-pipeline cloudflare
在您看来,在这种情况下,什么是最好的数据库来处理数据并构建基于Web的报告:
有大量的Javascript数据可视化库,但理想情况下我正在寻找与MongoDB集成"现成"的东西,并使用现代技术(HTML5)与旧版(Flash).
如果我没有找到任何特定的MongoDB,我可能会使用Google Chart或D3.js,这看起来很棒但可能太"年轻"了.
我想添加一个方法到Kernel
模块,但不是重新打开Kernel
,直接定义一个实例方法,我正在写一个模块,我想Kernel
给extend/include
该模块.
module Talk
def hello
puts "hello there"
end
end
module Kernel
extend Talk
end
Run Code Online (Sandbox Code Playgroud)
当我在IRB中运行时:
$ hello
NameError: undefined local variable or method `hello' for main:Object
from (irb):12
from /Users/JackC/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>
Run Code Online (Sandbox Code Playgroud)
如果我检查instance_methods
上Kernel
,我可以看到#hello加入了Kernel
,但不是在main Object
.
我也尝试过使用include
,但同样的事情发生了:
module Kernel
include Talk
end
Run Code Online (Sandbox Code Playgroud)
但是,如果我直接定义它:
module Kernel
def hello
puts "hello there"
end
end
Run Code Online (Sandbox Code Playgroud)
然后它确实包含在main Object
.
$ hello
hello there
=> nil
Run Code Online (Sandbox Code Playgroud)
包括Talk …
当使用具有ssl的站点配置nginx时,我在网上找到的示例基本上复制了位置设置.大多数示例只有默认的根位置,所以它不是那么大的交易,但是当你有几个位置并重写规则时,重复这个配置变得很混乱.
我已经考虑将ssl请求代理到localhost以解决这个问题,但这有点难看.我也考虑过使用文件包含,但是这个站点的位置配置应该是1个文件,因为它们是相关的.
有什么建议?
编辑:我们使用的是nginx版本0.6.32.