小编Jac*_*Chu的帖子

如何从Grails控制器返回404/50x状态代码?

我有一个控制器需要在某些条件下返回404页面和状态代码.我似乎无法在Grails中找到如何做到这一点.同事推荐这种方法:

response.sendError(HttpServletResponse.SC_NOT_FOUND)
Run Code Online (Sandbox Code Playgroud)

它的效果非常好,但它并不像Grails那样.我知道Rails的render方法采用status参数,但Grails的render没有这样的功能.有什么我想念的,有什么最好的方法来完成这个?

error-handling grails groovy http-status-code-404

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

Rails 3.构建oauth2提供者

我正在使用Ruby on Rails 3开发一个API,我想用Oauth2保护它.换句话说,我需要创建一个Oauth提供程序.是否有Rails 3的工作宝石或者可能是关于这个问题的教程?

UPDATE

我知道Rails是基于REST的,所以我觉得很奇怪,没有关于如何创建公共API并保护它的教程.有谁知道任何好的教程.优先使用oAuth.

感谢所有的帮助!!

ruby-on-rails oauth-2.0 ruby-on-rails-3

41
推荐指数
5
解决办法
3万
查看次数

我可以配置没有数据源的Grails吗?

我有一个Grails应用程序,它从xml文件加载其数据并通过罗马提供rss提要.我没有任何域类,我的应用程序没有数据源.我不希望Grails在应用程序不需要时加载内存中的hsql db.删除DataSource.groovy文件阻止我启动Web应用程序,似乎需要数据源,但如果我的应用程序不需要数据源,我还能做些什么吗?

database grails groovy datasource

25
推荐指数
2
解决办法
8218
查看次数

Factory Girl的额外参数

我需要将额外的参数传递给工厂女孩以用于回调.像这样的东西(但实际上更复杂):

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)

有什么想法怎么做?

ruby ruby-on-rails factory-bot

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

在初始化程序中设置cache_store

我正在尝试使用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.

有没有人经历过这个?我似乎无法在初始化程序中设置缓存存储.

ruby caching ruby-on-rails redis ruby-on-rails-3

19
推荐指数
2
解决办法
9020
查看次数

如何防止Rails 3.1将静态资产缓存到Rails.cache?

我在我的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

19
推荐指数
2
解决办法
5973
查看次数

MongoDB的最佳分析/数据可视化库

在您看来,在这种情况下,什么是最好的数据库来处理数据并构建基于Web的报告:

  • 数据:MongoDB中的文档,文档少于1M,时间是数据的关键维度
  • 框架:Rails(但我向其他人开放)

有大量的Javascript数据可视化库,但理想情况下我正在寻找与MongoDB集成"现成"的东西,并使用现代技术(HTML5)与旧版(Flash).

如果我没有找到任何特定的MongoDB,我可能会使用Google Chart或D3.js,这看起来很棒但可能太"年轻"了.

analytics data-visualization ruby-on-rails mongodb

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

包含/扩展内核不会在main:Object上添加这些方法

我想添加一个方法到Kernel模块,但不是重新打开Kernel,直接定义一个实例方法,我正在写一个模块,我想Kernelextend/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_methodsKernel,我可以看到#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 …

ruby

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

7
推荐指数
2
解决办法
7076
查看次数

如何在nginx中重用服务器配置?

当使用具有ssl的站点配置nginx时,我在网上找到的示例基本上复制了位置设置.大多数示例只有默认的根位置,所以它不是那么大的交易,但是当你有几个位置并重写规则时,重复这个配置变得很混乱.

我已经考虑将ssl请求代理到localhost以解决这个问题,但这有点难看.我也考虑过使用文件包含,但是这个站点的位置配置应该是1个文件,因为它们是相关的.

有什么建议?

编辑:我们使用的是nginx版本0.6.32.

ssl https configuration nginx

6
推荐指数
1
解决办法
2310
查看次数