小编Kos*_*tas的帖子

如何测试before_filter在Rails中使用RSpec正常工作

check_user_access_control我的ApplicationController中有一个before_filter,它在记录用户的角色和权限允许之前检查它.我正在尝试对它进行一些测试,但我找不到一个很好的方法.

对于简单的索引操作,我只需:

it "allows access to mod" do
  login_as(Factory(:mod)) # this is a spec helper
  get :index
  response.code.should == "200"
end
Run Code Online (Sandbox Code Playgroud)

它工作得很好.对于需要一些参数的编辑/显示/创建和其他操作,与数据库的交互以及运行后可能的重定向,它需要太多其他东西才能被存根.

有没有办法测试在before_filters之后是否调用了特定的动作?我正在寻找类似controller.should_receive(:action_name)(不起作用)的东西来替换response.code.should == "200"线.

版本:rails 3.0.4和rspec 2.5

我尝试了另一种方法.我们在ApplicationController中调用了一个方法redirect_to_login,我现在正在检查并使用controller.should_receive(:redirect_to_login)它.

虽然它可以正确检测用户是否被允许,但它会存储方法,这意味着无论用户是否被允许,都会运行控制器操作.此外,行动取决于参数和数据库,我们不希望这样.

如果现在我使用操作方法存根controller.stub!(:action_name),则不会运行操作,但RSpec仍在查找模板.好吧,有些动作没有模板,它们只是以一个redirect_to :action => :somewhere_else或者render :text => "foobar"在此时我们不关心的结束.

在排序,我现在需要的是找到一种方法,使RSpec的担心模板的存在.

rspec ruby-on-rails

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

通过HTTP流式控制台输出(使用Ruby)

我试图远程运行一些命令,SSH不能进入机器.我想要做的是设置一个运行一些特定命令的Sinatra应用程序,并通过HTTP流输出输出.

示例操作如下所示:

get "/log" do
  `tail -f some.log`
end
Run Code Online (Sandbox Code Playgroud)

1据我所知,我需要使用Unicorn(或Mongrel),因为Thin不支持流数据2我认为我需要通过某种IO ruby​​对象来管道输出命令

我几乎知道怎么做(1)但不知道如何实现(2).

ruby sinatra unicorn

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

在OSX上,Sane默认为MongoDB?

我安装了MongoDB并进行了如下设置:

数据库路径: /data/db

系统范围的配置文件: /usr/local/mongodb/mongod.conf

launchctl plist: /Library/LaunchDaemons/org.mongodb.mongod.plist

日志: /var/log/mongodb/output.log

二进制: /usr/local/bin/mongod

所有这些路径都有默认值吗?

我正在寻找与MongoDB OS X 一致的默认值.答案的参考文献很可爱.:-)

macos configuration mongodb

12
推荐指数
2
解决办法
7444
查看次数

有没有办法反转ActiveRecord :: Relation查询?

假设我们有以下内容:

irb> Post.where(:hidden => true).to_sql
=> "SELECT `posts`.* FROM `posts` WHERE posts.hidden = 1"
Run Code Online (Sandbox Code Playgroud)

我们能以某种方式得到一个倒置的SQL查询吗?

我在寻找什么,应该是这样的:

irb> Post.where(:hidden => true).invert.to_sql
=> "SELECT `posts`.* FROM `posts` WHERE NOT (posts.hidden = 1)"
Run Code Online (Sandbox Code Playgroud)

sql ruby-on-rails arel ruby-on-rails-3

11
推荐指数
4
解决办法
4257
查看次数

捕获彩色输出到bash变量

我想从git status变量中捕获颜色输出并稍后打印.

到目前为止,我已经达到:

status=$(git status -s)
echo -e "$status"
Run Code Online (Sandbox Code Playgroud)

上面的脚本保持换行完整(thx到捕获多行输出到Bash变量)但从输出中删除颜色.

有没有办法保持变量中的颜色并回显它?

variables bash colors

11
推荐指数
2
解决办法
1942
查看次数

如何摆脱Git中的"refs/bisect/bad"分支

我有以下内容~/.gitconfig (这只是为了帮助您了解我正在查看的内容):

[alias]
    lg = log --graph --all --pretty=format:'%Cred%h %Cgreen(%cr)%Creset - %s %C(yellow)%d %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
Run Code Online (Sandbox Code Playgroud)

当我这样做时git log,它会向我显示带有分支名称和内容的完整提交树.昨天我发起了一个git bisect,今天我看到refs/bisect/bad我的日志输出中有一个分支.

究竟是什么refs/bisect/bad分支,我该如何摆脱它?

git git-bisect

8
推荐指数
2
解决办法
952
查看次数

通过命令行中的capistrano在远程主机上运行命令

有没有办法在capistrano中运行命令而不将其添加到Capfile?

例:

cap --eval "run 'du -sh'" --role web
Run Code Online (Sandbox Code Playgroud)

ruby capistrano

8
推荐指数
2
解决办法
3622
查看次数

将Sprockets的`depend_on`指令指向非资产文件

我有一个app/assets/javascripts/moufa.js.erb文件,用文件中的值填充config/moufa.yml.我想使用depend_onsprockets指令,以便每次更改yaml文件时,它都会重新编译js文件.

ruby-on-rails-3 sprockets asset-pipeline

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

如何查找Puma Worker自发重启的根本原因?

在我的 RoR API 服务上,我有时会看到请求在处理过程中被中断。只需 Puma 服务器停止处理请求,然后我就可以在日志中看到消息说:

[10] - Worker 0 (PID: 811) booted in 0.01s, phase: 0
Run Code Online (Sandbox Code Playgroud)

我正在尝试找出其根本原因。该 API 服务作为 pod 在 Kubernetes 中运行,在该服务之前我有 AWS ELB。

需要明确的是,K8S pod 不会重新启动,只有 Puma 的一名工作人员被“杀死”,然后立即重新启动。

ruby-on-rails amazon-web-services puma kubernetes

7
推荐指数
0
解决办法
957
查看次数

在ruby中对数组进行排序的最简单代码?

我经常这样做

array.sort{|a,b| a.something <=> b.something}
Run Code Online (Sandbox Code Playgroud)

我该怎么干这个?

ruby arrays dry

6
推荐指数
3
解决办法
3232
查看次数