小编Mat*_*ick的帖子

如何使用RSpec测试CanCan失败授权的响应代码?

我正在开发一个rails项目,我使用CanCan来授权我的资源.当用户未登录并尝试提交"谈话"(通过ajax表单提交)时,CanCan会正确引发401 {"status":"error","message":"You must be logged in to do that!"}作为响应(我已在浏览器中使用firebug验证了这一点).但是,在我的测试中得到302响应代码而不是401:

class TalksController < ApplicationController
  authorize_resource

  def create
    @talk = current_user.talks.build(params[:talk])

    respond_to do |format|
      if @talk.save
        response = { :redirect => talk_path(@talk) }
        format.html { redirect_to @talk, notice: 'Talk was successfully created.' }
        format.json { render json: response, status: :created,  }
      else
        format.html { render action: "new" }
        format.json { render json: @talk.errors, status: :unprocessable_entity }
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

talks_controller_spec.rb:

describe TalksController do
  describe "POST create" do
    context "when not …
Run Code Online (Sandbox Code Playgroud)

controller rspec cancan rspec-rails

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

在Windows 7上使用Compass轮询时出错

我试图在本地工作的PHP应用程序,我从我的合作伙伴和我使用的Git存储库克隆.

他使用Mac,直到现在我一直在虚拟Ubuntu Linux环境中处理应用程序.这两种环境都能够使用具有相同文件结构和文件的Compass轮询.

在Windows 7上,我从Cygwin运行Compass命令,这是我用来从应用程序的根目录(C:/ wamp/www/application)进行Compass轮询的命令:

compass watch --trace src/Application/ApplicationBundle/Resources/compass/

当我然后更改.scss文件时,我收到以下错误:

ArgumentError on line 716 of /usr/lib/ruby/1.8/pathname.rb: different prefix: "/ /cygdrivecwampwwwlimelightsrclimelightlimelightbundleresourcescompasssrcpartials _object.scss" and "/cygdrive/c/wamp/www/limelight/src/limelight/limelightbundle/ resources/compass/src" /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb:81:in 'split_path' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb:69:in 'run_callback' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb:55:in 'callback_action' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/path.rb:35:in 'update' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb:39:in 'modified' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb:37:in 'each' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb:37:in 'modified' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/state/directory.rb:18:in 'refresh' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb:17:in 'run' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb:17:in 'each' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb:17:in 'run' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb:15:in 'loop' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/backends/polling.rb:15:in 'run' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm/monitor.rb:26:in 'run' /usr/lib/ruby/gems/1.8/gems/fssm-0.2.7/lib/fssm.rb:20:in 'monitor' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/commands/watch_project.rb:86:in 'perform' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/commands/base.rb:18:in 'execute' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/commands/project_base.rb:19:in 'execute' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/exec/sub_command_ui.rb:43:in 'perform!' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/lib/compass/exec/sub_command_ui.rb:15:in 'run!' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/bin/compass:25 /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/bin/compass:39:in 'call' /usr/lib/ruby/gems/1.8/gems/compass-0.11.1/bin/compass:39 /usr/bin/compass:19:in 'load' /usr/bin/compass:19

我通过搜索找到的只是它可能与Windows资本化其驱动器名称这一事实有关,尽管返回路径中缺少斜线使我认为问题可能在其他地方.

有谁知道为什么我可能会在Windows中收到此错误,但不是其他平台?

注意:我找到了一个解决方案,涉及通过Windows'命令提示符而不是Cygwin安装ruby(和指南针),这应该可以正常工作.不过,如果有人有想法,我仍然对这个问题可能是多么好奇.

ruby cygwin windows-7 compass-sass

9
推荐指数
2
解决办法
3915
查看次数

Omniauth-facebook取消按钮

我已经开始将facebook身份验证集成到我的Rails 3.1站点中,但是当我单击fb auth对话框上的取消按钮时遇到了问题.当我点击取消时,我会被重定向回我的网站/ auth/facebook/callback,然后重定向到/ login页面(我正在使用Devise).

我想要做的是将取消的身份验证重定向到允许用户以标准方式(电子邮件,用户名,密码等)创建帐户的页面.如何覆盖重定向到/ login页面?

顺便说一下,我正在使用omniauth-facebook宝石.

谢谢!

facebook devise omniauth

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