问题列表 - 第48503页

使用Rspec和Capybara在Rails 3中测试会话

我正在尝试用rspec,factory_girl和capybara编写集成测试.我也安装了黄瓜,但我没有使用它(据我所知).

我基本上想用我的用户预填充数据库,然后转到我的主页并尝试登录.它应该重定向到user_path(@user).

但是,我的/ rspec/requests/integration测试似乎没有持久化会话.

我的规范:/rspec/requests/users_spec.rb

require 'spec_helper'

describe "User flow" do

  before(:each) do
    @user = Factory(:user)
  end

  it "should login user" do

    visit("/index")

    fill_in :email, :with => @user.email
    fill_in :password, :with => @user.password
    click_button "Login"
    assert current_path == user_path(@user)
  end
end
Run Code Online (Sandbox Code Playgroud)

返回:

Failures:

  1) User flow should login user
     Failure/Error: assert current_path == user_path(@user)
     <false> is not true.
     # (eval):2:in `send'
     # (eval):2:in `assert'
     # ./spec/requests/users_spec.rb:16
Run Code Online (Sandbox Code Playgroud)

相反,它会重定向到我的please_login_path - 如果登录因任何原因失败(或者如果未设置session [:user_id]),则会发生这种情况.

如果我尝试放入session.inspect,它将作为一个nil对象失败.

如果我尝试在控制器测试中执行此操作(/rspec/controllers/sessions_spec.rb),我可以毫无问题地访问会话,并且我可以调用session [:user_id]

session rspec ruby-on-rails capybara

8
推荐指数
1
解决办法
9231
查看次数

如何获得Android上的wifi连接速率?

我想知道是否有人可以告诉我怎样才能获得我的Android手机上的wifi连接速率?

android

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

Rails 3修改updated_at

我正在创建一个CourseEnrollment模型,每当用户查看课程时,我想用当前时间戳更新数据库.我应该只更新现有的updated_at字段还是为模型创建一个单独的字段?

ruby-on-rails

6
推荐指数
2
解决办法
8381
查看次数

RESTful超媒体,相对或绝对URI

我刚读过REST实践:超媒体和系统架构这本书,现在我正在尝试一些想法,但无法弄清楚是否在我的响应文档中使用绝对或相对URI.

我更喜欢abosulte URI,但可以看到在进入生产时会出现问题,其中带有负载均衡器的服务器基础架构,apache重写,以及Tomcat服务器将覆盖原始URI并弄乱我的URI生成机制,信息等因为方案和上下文路径在它访问Java代码时将被重写或丢失,并且从客户端的角度来看URI将是不正确的.

然后我想尝试使用相对URI,但这是一个好主意还是错误的转向?

本书坚持使用绝对URI,但我找不到任何关于此的提及.马丁福勒写了关于理查森成熟度模型的文章,他正在使用相对URI.

你怎么看?优点缺点?

rest uri

5
推荐指数
1
解决办法
617
查看次数

"存在"在Haskell类型系统中意味着什么?

我正在努力理解与existsHaskell类型系统相关的关键字.据我所知,默认情况下Haskell中没有这样的关键字,但是:

  • 在这些声明中有扩展添加它们data Accum a = exists s. MkAccum s (a -> s -> s) (s -> a)
  • 我已经看过一篇关于它们的论文,并且(如果我没记错的话)它声明exists关键字对于类型系统是不必要的,因为它可以通过forall

但我甚至不明白是什么exists意思.

当我说,forall a . a -> Int这意味着(在我的理解中,不正确的一个,我猜)"对于每个(类型)a,都有一个类型的函数a -> Int":

myF1 :: forall a . a -> Int
myF1 _ = 123
-- okay, that function (`a -> Int`) does exist for any `a`
-- because we have just defined it
Run Code Online (Sandbox Code Playgroud)

当我说exists a . a -> …

haskell exists quantifiers forall

33
推荐指数
4
解决办法
3063
查看次数

Ruby(Rails)unescape一个字符串 - 撤消Array.to_s

一直在乱砍几个库,并遇到一个字符串被"双重逃脱"的问题.

例如: 固定示例

 > x = ['a']
 => ["a"] 
 > x.to_s
 => "[\"a\"]" 
 > 
Run Code Online (Sandbox Code Playgroud)

然后再来

\"\[\\\"s\\\"\]\"
Run Code Online (Sandbox Code Playgroud)

在处理http标头时发生了这种情况.我有一个标题,它将是一个数组,但http库正在对array.to_s值进行自己的字符转义.

我发现的解决方法是将数组转换为字符串,然后"撤消"to_s.像这样:formatted_value = value.to_s

if value.instance_of?(Array)
  formatted_value = formatted_value.gsub(/\\/,"") #remove backslash                                                 
  formatted_value = formatted_value.gsub(/"/,"")  #remove single quote
  formatted_value = formatted_value.gsub(/\[/,"") #remove [                                                                                                     
  formatted_value = formatted_value.gsub(/\]/,"") #remove ]   
end
value = formatted_value
Run Code Online (Sandbox Code Playgroud)

......有一个更好的方法......(不需要修补我正在使用的宝石).(是的,如果我的字符串实际上包含那些字符串,那么这个休息.)

建议?

**更新2**

好的.在这个街区仍然有麻烦,但现在我想我已经找到了核心问题.在to_s调用之后,它将我的数组序列化为json.至少,这似乎正在复制我所看到的.

[ 'A'].to_s.to_json

我正在调用一个返回to_s结果的gem中的方法,然后我在它上面调用to_json.

ruby string ruby-on-rails http http-headers

4
推荐指数
1
解决办法
5067
查看次数

让gdb自动从核心文件加载二进制文件

我可以让gdb自动加载核心文件中指定的二进制文件吗?

鉴于我现在通常做的核心文件:

gdb -c corefile
GNU gdb 6.8
...
Core was generated by `/path/to/binary'
Run Code Online (Sandbox Code Playgroud)

然后我复制粘贴并运行:

gdb -c corefile /path/to/binary
Run Code Online (Sandbox Code Playgroud)

这似乎是一个不必要的两步过程,但我没有看到基于手册页这样做的明显方法.我错过了什么吗?

c++ gdb

5
推荐指数
1
解决办法
2165
查看次数

Reactive:IObservable接收的最新值

我知道以下是阻塞调用,并将返回可观察序列中的第一个值:

var result = myObservable.First();
Run Code Online (Sandbox Code Playgroud)

根据我使用的主题类型,这有不同的含义:

  • Subject - First()将阻塞,直到下一次调用OnNext(),这意味着最终这将是最新的值
  • BehaviorSubject - First()将阻塞,直到通过OnNext()推送至少一个值,并且因为BehaviorSubject跟踪最后一个值,这将是最新值
  • ReplaySubject - First()将阻塞,直到通过OnNext()推送了至少一个值,但是如果许多项目已经通过OnNext推送,那么它将是其缓冲区中的第一个,而不是最后一个

现在我试图找到一种获取最后一个值的一致方法,无论使用哪个底层Observable.

有任何想法吗?

.net c# system.reactive

8
推荐指数
1
解决办法
3096
查看次数

如何禁用textarea的resizable属性?

我想禁用一个可调整大小的属性textarea.

目前,我可以textarea通过单击右下角textarea并拖动鼠标来调整大小.我怎么能禁用它?

html css

2541
推荐指数
17
解决办法
128万
查看次数

更改html5视频标记上的源代码

我正在尝试构建一个适用于任何地方的视频播放器.到目前为止我要去:

<video>
    <source src="video.mp4"></source>
    <source src="video.ogv"></source>
    <object data="flowplayer.swf" type="application/x-shockwave-flash">
        <param name="movie" value="flowplayer.swf" />
        <param name="flashvars" value='config={"clip":"video.mp4"}' />
    </object>
</video>
Run Code Online (Sandbox Code Playgroud)

(如在几个网站上看到的,例如每个人的视频)到目前为止,非常好.

但现在我也想要一些播放列表/菜单以及视频播放器,我可以从中选择其他视频.那些应该马上在我的播放器中打开.所以我将不得不"动态改变视频的来源"(见dev.opera.com/articles/everything-you-need-to-know-html5-video-audio/ - section"让我们来看看另一部电影")用javascript.让我们暂时忘记flashplayer(以及IE)部分,我将稍后尝试处理.

所以我的JS改变<source>标签应该是这样的:

<script>
function loadAnotherVideo() {
    var video = document.getElementsByTagName('video')[0];
    var sources = video.getElementsByTagName('source');
    sources[0].src = 'video2.mp4';
    sources[1].src = 'video2.ogv';
    video.load();
}
</script>
Run Code Online (Sandbox Code Playgroud)

问题是,这在所有浏览器中都不起作用.即,firefox = O有一个很好的页面,你可以在那里观察我遇到的问题:http://www.w3.org/2010/05/video/mediaevents.html

一旦我触发load()方法(在Firefox中,请注意),视频播放器就会死机.

现在我发现当我不使用多个<source>标签,而只是标签中的一个src属性时<video>,整个事情都可以在firefox中运行.

所以我的计划是使用该src属性并使用canPlayType()函数确定适当的文件.

我是以某种方式做错了还是让事情变得复杂?

javascript video html5 load

126
推荐指数
8
解决办法
27万
查看次数