访问请求规范中的请求对象

如何在请求规范上执行请求之前设置请求标头? 我正在移动控制器规范以使用Rails在我的API上请求规范。 我坚持的一件事是我无法访问request对象以允许请求。 在我的控制器规格上,我可以访问我创建的一个签署特定用户的方法: def sign_in(user) token = user.api_keys.first.token # note the request object being used in the next line request.env[“HTTP_AUTHORIZATION”] = ActionController::HttpAuthentication::Token.encode_credentials(token) end 这在控制器规格上工作正常,我可以安全地做到: before { sign_in(user) } it { post :endpoint, params } 但是在请求规范中, request对象不可用。 如果我尝试: before { sign_in(user) } it { post “/api/endpoint”, params } 我的帮助方法request为nil 。 我知道我能做到: it { post “/api/endpoint”, […]

Ruby:for循环和每个循环之间有什么区别?

可能重复: 对于Ruby中的每个人 假设我们有一个数组,就像 sites = %w[stackoverflow stackexchange serverfault] 有什么区别 for x in sites do puts x end 和 sites.each do |x| puts x end ? 对我来说,它们似乎做了同样的事情, for循环的语法对我来说更清晰。 有区别吗? 在什么情况下这将是一个大问题?

通过不同的浏览器使用watir-webdriver进行多个并发浏览器测试

所以我在这里的网站上工作,我想一次运行多个浏览器测试。 我的意思是它应该同时执行我的冒烟测试,即firefox和chrome,并报告每个浏览器的结果。 我目前只使用rpsec和watir-webdriver进行测试,但希望自动化其他2个浏览器。 那里有没有现有的gem(我找不到任何gem),如果不是最好的方法来解决这个问题?

ruby Date.today和DateTime.now的错误日期

我用RVM安装了ruby-1.8.6-p383。 系统ruby是1.9.1_p378-1 使用ruby 1.8时,我从Date.today和DateTime.now得到错误的日期。而Time.now是正确的: irb(main):002:0> DateTime.now.to_s => “2126–1-10618T11:23:43+00:00” irb(main):004:0> Date.today.to_s => “2126–1-10618” irb(main):005:0> Time.now => Thu Jan 28 11:55:27 +0000 2010 如果我切换到ruby 1.9,一切都很好: irb(main):003:0> DateTime.now.to_s => “2010-01-28T11:58:51+00:00” irb(main):004:0> Date.today.to_s => “2010-01-28” irb(main):005:0> Time.now => 2010-01-28 11:59:05 +0000 有关如何让DateTime在ruby 1.8中正常工作的任何建议都将非常感激!

在RSpec测试中嘲笑ActiveRecord关系

我通过测试遇到了这个问题。 我们假设我有两个模型,User和Post,其中用户has_many:posts。 我试图指出一个包含这样的代码块: user = User.find(123) post = user.posts.find(456) 我知道如何模拟User.find和user.posts部分。 user.posts mock返回Post对象的数组。 当它到达.find(456)部分时,所有内容都会在no block givenexception。 所以我的问题是:作为user.posts mock的结果我返回什么,以便.find(456)方法可以使用它? User.first.posts.class说它是Array,但显然有更多的东西使AR风格的查找调用工作。 我对于在返回的对象上模拟find方法的前景并不高兴。 PS在你提出明确而好的答案之前,先停止嘲笑和使用固定装置/用必要的数据为测试数据库播种,这里是catch:legacy scheme。 User和Post都在数据库视图之上工作而不是表,并且更改它以使它们成为测试数据库中的表似乎对我不利。

Rails send_file不播放mp4

我有一个Rails应用程序,可以保护上传的video,将它们放入私人文件夹。 现在我需要播放这些video,当我在控制器中执行此类操作时: def show video = Video.find(params[:id]) send_file(video.full_path, type: “video/mp4”, disposition: “inline”) end 并在/ videos /:打开浏览器(Chrome或FF),但不播放video。 如果我将相同的video放在公共文件夹中,并像/video.mp4一样访问它,它将播放。 如果我删除了dispositon:“inline”它会下载video,我可以从我的电脑上播放它。 webmvideo也是如此。 我错过了什么? 这可能吗?

用于游戏图形的Ruby库/ gem?

我正在用Ruby创建一个简单的Blackjack游戏,我已经完成了所有的游戏逻辑工作(最后!)并且目前已经通过命令行运行了。 这一切都在工作,所以现在我需要一个库或gem,这将使整个图形方面更容易。 有任何想法吗? 谢谢。

rails 4中关于匹配关键字的路由问题在rails 3中工作

在rails 3匹配关键字正在工作但在rails 4匹配关键字不适用于路由 如何在rails 4中定义这些路由 此代码段正在rails 3中运行 match ‘admin’, :to => ‘access#menu’ match ‘show/:id’, :to => ‘public#show’ match ‘:controller(/:action(/:id(.:format)))’ 我需要轨道4的通用公式,如轨道3 match ‘:controller(/:action(/:id(.:format)))’

request.location ruby​​ geocoder中的错误

在我的sesions表中我使用请求方法存储国家和城市名称,现在,在ubuntu服务器中它运行良好但在redhat中我收到此错误 NoMethodError (undefined method `city’ for nil:NilClass) 我尝试了这个问题的解决方案 ,我重新启动了我的服务器,但它对我不起作用。 在两台服务器中,我使用的是Passenger + Apache

如何从字符串中提取包含非英语字符的URL?

这是一个简单的脚本,它带有一个带有德语URL的锚标记,并提取URL: # encoding: utf-8 require ‘uri’ url = URI.extract(‘München’) puts url http://www.example.com/wp-content/uploads/2012/01/M extract方法在ü处停止。 如何才能使用非英文字母? 我正在使用ruby-1.9.3-p0。