小编far*_*noy的帖子

测试使用CanCan和Devise与RSpec的视图

我试图测试一个简单的索引视图,其中包含以下代码:

- if can? :destroy, MyModel
  %th Options
Run Code Online (Sandbox Code Playgroud)

MyModelsController 有以下选项(继承资源+ CanCan + Devise):

class MyModelsController < ApplicationController
  inherit_resources
  nested_belongs_to :mymodel
  before_filter :authenticate_user!
  load_and_authorize_resource :project
  load_and_authorize_resource :mymodel, :through => :project
Run Code Online (Sandbox Code Playgroud)

运行规格时,它会在该行崩溃 - if can? :destroy, MyModel

Failure/Error: render
   ActionView::Template::Error:
      undefined method `authenticate' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

没有追溯,没有任何依据......

我想也许在测试视图时我没有被授权和签名,但是Devise::TestHelpers应该只包含在控制器测试中(这就是我的方法).

我试图覆盖方法可以吗?在两者Ability和控制器中,但没有产生任何影响.

ruby rspec ruby-on-rails devise cancan

20
推荐指数
3
解决办法
7581
查看次数

去websockets eof

我正在尝试创建一个简单的命令转发器来将我的家用计算机连接到我拥有的服务器,以便我可以将命令推送到我的服务器而我的家用电脑可以获得它.这些命令是我的下载器的简单暂停/恢复.我的设计是,在服务器上,我运行一个集线器实例,它创建一个传递命令的窗口和一个后端窗口,将这些命令传递给我的电脑.我将这两个"窗口"与一个频道绑定,他们运行服务器.当客户端连接并向集线器发送消息时,它会通过通道流到后端窗口,然后流到真正的后端(在我的家用电脑上).当后端响应集线器上的后端窗口时,集线器会将结果打印回客户端.

使用此方法,只有第一条消息通过并与我的下载程序一起使用.每次收到消息以使其正常工作时,我必须从家用电脑的后端重新连接集线器.我不认为这是websockets的正确方法,所以我在这里.在一次成功的请求之后(当后端完成它的工作并回复结果时),它会在EOF错误的情况下永远循环.

代码的重要部分是:

如果你把源代码放在你的GOPATH中(我正在为支持现代websockets的tip版本开发它),要编译它: go build gosab/cmd运行它:

  • ./cmd -mode="hub"
  • ./cmd -mode="backend" --address="localhost:8082" 后端

要将消息传递到集线器,请使用以下javascript:

var s = new WebSocket("ws://localhost:8082")
s.send("1 5")
Run Code Online (Sandbox Code Playgroud)

那我该怎么处理呢?渠道是两种不同请求之间沟通的好方法吗?

io go eof websocket

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

带有LIMIT 1的索引ORDER BY

我正在尝试获取表中最近的行.我有一个简单的时间戳created_at索引.当我查询时ORDER BY created_at DESC LIMIT 1,它需要的远远超过我的想象(我的机器上36k行约50ms).

EXPLAIN -ing声称它使用向后索引扫描,但我确认更改索引(created_at DESC)不会改变查询规划器中的简单索引扫描的成本.

如何优化此用例?

运行postgresql 9.2.4.

编辑:

# EXPLAIN SELECT * FROM articles ORDER BY created_at DESC LIMIT 1;
                                                  QUERY PLAN                                                       
-----------------------------------------------------------------------------------------------------------------------
Limit  (cost=0.00..0.58 rows=1 width=1752)
   ->  Index Scan Backward using index_articles_on_created_at on articles  (cost=0.00..20667.37 rows=35696 width=1752)
(2 rows)
Run Code Online (Sandbox Code Playgroud)

sql postgresql indexing sql-order-by postgresql-performance

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

着色和混合分色以在Ghostscript中打印PDF

我正在使用Ghostscript为PDF文件中的每个Process和Spot颜色生成灰度tif分色.过程如下:

  1. Ghostscript tiffsep作为设备运行
  2. 我使用带有灰度分色文件的ImageMagick作为遮罩,使用从PDF文件中提取的颜色在白色画布上着色

但彩色分色与Adobe的打印预览不同.

我尝试在ImageMagick和Ghostscript中使用Adobe的ICC颜色配置文件(即AdobeRGB1998和USWebCoatedSWOP for CMYK),但结果仍然没有.

Ghostscript版本:9.14,IM:6.8.9-5

printing imagemagick ghostscript

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

使用Devise ldap身份验证时编码错误

我一直在网上寻找答案,但我没有想法.我正在使用Devise with Rails 3来验证LDAP.我在Ruby 1.9.2中使用Rails 3.我使用mysql2作为数据库连接器.

我可以使用rails控制台,所以我知道我的地址,一切都是正确的.

我们有一个活动目录,为了进行身份验证,我们必须在登录名前加上系统.所以我的登录将是systems\crudbasher.

这在控制台中有效,但是当我有一个带有登录名和密码的表单时,我收到此错误.

Devise中的Encoding :: CompatibilityError :: SessionsController #create不兼容的字符编码:ASCII-8BIT和UTF-8

好吧,我知道反斜杠有问题.我不明白的是如何解决它.

完整的堆栈跟踪,如果它有帮助是这样的:

net-ldap (0.2.2) lib/net/ber/core_ext/array.rb:62:in `to_ber_seq_internal'
net-ldap (0.2.2) lib/net/ber/core_ext/array.rb:54:in `to_ber_contextspecific'
net-ldap (0.2.2) lib/net/ldap/filter.rb:509:in `to_ber'
net-ldap (0.2.2) lib/net/ldap.rb:1380:in `block in search'
net-ldap (0.2.2) lib/net/ldap.rb:1361:in `loop'
net-ldap (0.2.2) lib/net/ldap.rb:1361:in `search'
net-ldap (0.2.2) lib/net/ldap.rb:635:in `search'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/ldap_adapter.rb:208:in `search_for_login'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/ldap_adapter.rb:86:in `dn'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/ldap_adapter.rb:124:in `authorized?'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/ldap_adapter.rb:14:in `valid_credentials?'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/model.rb:39:in `valid_ldap_authentication?'
activesupport (3.1.1) lib/active_support/core_ext/object/try.rb:32:in `try'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/model.rb:85:in `authenticate_with_ldap'
devise_ldap_authenticatable (0.6.0) lib/devise_ldap_authenticatable/strategy.rb:12:in `authenticate!'
Run Code Online (Sandbox Code Playgroud)

我真的很难过.谢谢任何可以提供帮助的人!

ruby ldap ruby-on-rails devise

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

包括Enumerable的要求

我一直在尝试设计我的只读数组数据结构,我真的很喜欢用Enumerable类提供遍历选项,但我找不到它的要求.在我看过的一些例子中,C实现寻找#each方法,但在我看来它还不够.

ruby enumerable

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

table-layout:修复问题

我有一个table固定的表格布局.表中有2列.

如果我colspan=2为第一行设置,那么对于剩余的行,它显示相等的宽度.(它没有采用我指定的宽度.)

小提琴附在这里

<table style='table-layout:fixed' border="1" width="100%">
  <thead>
    <tr>
      <th colspan='2'>10000</th>
    </tr>
    <tr>
      <th width="5%">1066fdg</th>
      <th width="95%">10</th>
    </tr>
  </thead>
</table>
Run Code Online (Sandbox Code Playgroud)

无论如何为剩余的行设置指定的列宽?

css tablelayout

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

简单函数java String to Int/Reverse

我想String11ID 生成带有数字的数字.
例如:有一个帐户ID=12会给00000000012

之后我需要从字符串中检索此id.

例如:用绳子00000000022给出ID=22

java

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