小编Edw*_*all的帖子

权威无头政策

我在app的admin部分使用pundit进行访问控制.我有一个仪表板控制器,如下所示:

class Admin::DashboardsController < AdminController
  def index
    @total_revenue = Order.total_revenue
    authorize :dashboards, :index?
  end

  ...

end
Run Code Online (Sandbox Code Playgroud)

和一个看起来像这样的政策:

class DashboardPolicy < Struct.new(:user, :dashboard)
  def index?
    true
  end
end
Run Code Online (Sandbox Code Playgroud)

当我试图访问时,/admin/dashboards/我得到一个Pundit::NotDefinedError, unable to find policy SymbolPolicy for dashboards

我也试过命名空间策略并得到了同样的错误.

ruby-on-rails access-control ruby-on-rails-4 pundit

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

如何在swift中访问argv和argc?

我正在使用Swift编写一个命令行应用程序,但我不确定如何访问传入的参数.在C/Obj-c中它似乎相对无痛但是如果我尝试:

argv[0]
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:使用未解析的标识符'argv'

swift

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

Puma无法找到生产环境配置

我有一个使用puma运行的rails(4.2.4)应用程序.文件说:

如果通过-e--environment标志或RACK_ENV环境变量指定了环境,则默认文件位置为config/puma/environment_name.rb.

这就是我的配置文件所在的位置.

在我的开发环境中,puma启动就好了.这是配置:

workers 1
threads 1, 6
environment 'development'
activate_control_app
Run Code Online (Sandbox Code Playgroud)

然而,我的生产环境存在问题.这是配置:

workers 1
threads 1, 6
environment 'production'
app_dir = File.expand_path('../../..', __FILE__)
bind "unix://#{app_dir}/tmp/sockets/puma.sock"
stdout_redirect "#{app_dir}/log/puma.stdout.log",
                "#{app_dir}/log/puma.stderr.log",
                true
pidfile "#{app_dir}/tmp/pids/puma.pid"
state_path "#{app_dir}/tmp/pids/puma.state"
activate_control_app
daemonize true
Run Code Online (Sandbox Code Playgroud)

这显然更复杂,主要是为了使用套接字,日志记录和守护进程.我知道它的工作原理,因为它可以通过以下命令启动:

$ bundle exec pumactl start
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是,如果我想像上面的命令一样停止或重启服务器,我收到以下消息:

$ bundle exec pumactl stop
Neither pid nor control url available
Run Code Online (Sandbox Code Playgroud)

如果我指定配置文件的位置,它的工作原理:

$ bundle exec pumactl -F config/puma/production.rb stop
Run Code Online (Sandbox Code Playgroud)

为什么我需要指定配置文件stop,restart但不是start

ruby-on-rails puma

5
推荐指数
0
解决办法
845
查看次数

如何在Swift 3中播种随机数

在Swift 2中,我们可以使用 srandrandrandom(可能还有其他)来为随机数播种。

不幸的是,这在Swift 3中不起作用。尝试使用以下任何功能均会导致错误消息:

错误:“随机()”在Swift中不可用:请改用arc4random。

arc4_random很棒,但是我不能手动播种

另一个选择(来自上一则SO文章)是使用GameKit框架。导入整个框架以进行随机数播种感觉有点过头了(更不用说不是跨平台的,而不仅仅是Swift)。

还有其他选择吗?

random swift swift3

5
推荐指数
0
解决办法
412
查看次数

以编程方式设置字段时,如何触发最小长度验证?

我在这样的表单中有一个字段:

<input type="text" minlength="20" name="description" id="description" />
Run Code Online (Sandbox Code Playgroud)

输入时,minlength验证效果很好。但是,如果以编程方式设置输入的值,则不会触发验证。

var field = document.querySelector("#description");

// type a couple of character into the field
field.validity.tooShort;
// true

field.value = '';
field.validity.tooShort;
// false
Run Code Online (Sandbox Code Playgroud)

有解决方法吗?还是有计划的修复?我用错了吗?

html forms validation

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

弃用警告:不推荐使用`named_routes.helpers`,请使用`route_defined?(route_name)`来查看是否定义了命名路由

当我运行rspec时,我在使用Draper的be_decorated助手时收到了弃用警告:

DEPRECATION WARNING: `named_routes.helpers` is deprecated, please use `route_defined?(route_name)` to see if a named route was defined.
Run Code Online (Sandbox Code Playgroud)

我正在使用:

  • rspec 3.0.0
  • rspec-core 3.0.0
  • rspec-expectations 3.0.0
  • rspec-mocks 3.0.0
  • rspec-rails 3.0.2

rspec ruby-on-rails

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