小编Eld*_*der的帖子

Rails回溯消音器不起作用,而过滤器则不起作用

Fresh Rails 4.2设置.我想抑制长错误回溯.在下面的回溯日志中,第一行对我来说已经足够了,接下来的4行可以删除

ActionController::RoutingError (No route matches [GET] "/user"):
  actionpack (4.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  web-console (2.1.2) lib/web_console/middleware.rb:37:in `call'
  actionpack (4.2.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.2.1) lib/rails/rack/logger.rb:38:in `call_app'
Run Code Online (Sandbox Code Playgroud)

我添加了一个新的消音器 backtrace_silencers.rb

# config/initializers/backtrace_silencers.rb
Rails.backtrace_cleaner.add_silencer { |line| line =~ /lib/ }
Run Code Online (Sandbox Code Playgroud)

服务器重启后 - 没有任何反应,我仍然得到相同的回溯日志.(/lib/应该删除每一行匹配:http://api.rubyonrails.org/classes/ActiveSupport/BacktraceCleaner.htm)

完整性检查:

> line = "actionpack (4.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'"
=> "actionpack (4.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'"
> line =~ /lib/
=> 19
Run Code Online (Sandbox Code Playgroud)

但过滤器工作:

# config/initializers/backtrace_silencers.rb
Rails.backtrace_cleaner.add_filter { |line| line.gsub('lib', 'yeah!') }
Run Code Online (Sandbox Code Playgroud)

现在回溯看起来像这样:

ActionController::RoutingError (No route matches [GET] "/user"): …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails backtrace ruby-on-rails-4

7
推荐指数
2
解决办法
1556
查看次数

Rails应用程序的客户端数据加密/解密

用户正在相互发送消息,并通过Rails应用程序为其他用户发布私人信息。

目标是保护消息的安全,因此系统管理员和数据库泄漏都将无法破坏数据。使用接收方密钥进行Javascript客户端加密,加密的数据存储在数据库中,并在接收方进行解密。密钥未存储在系统中。

有道理吗?有解决方案吗?非常感谢!

更新:我的意思是不对称加密。每个用户有两个密钥:一个用于加密的公用密钥,一个用于解密的专用密钥。以及应用程序本身的密码。用户使用他的密码登录,创建一条消息,该消息是使用收件人的公用密钥(存储在系统中)加密的客户端,并保存在数据库中。收件人使用他的密码登录,然后输入他的私钥来解码消息。解密也是客户端,不将私钥发送到服务器。

javascript security encryption ruby-on-rails

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

Capybara:webkit 和 selenium 找不到 url,racktest 有效

多域应用程序。本地使用 POW 服务器。黄瓜测试

在我设置 app_host 的步骤之一(子域属于帐户并每次都创建):

def set_current_subdomain(subdomain)
  Capybara.app_host = "http://#{subdomain}.example.com:#{Capybara.server_port}"
end
Run Code Online (Sandbox Code Playgroud)

在黄瓜设置中:

Capybara.run_server = true 
Capybara.server_port = 8200
Capybara.javascript_driver = :selenium #default driver when you using @javascript tag
Capybara.app = Rack::ShowExceptions.new(MyApp::Application)
Capybara.default_driver = :rack_test
Run Code Online (Sandbox Code Playgroud)

步骤示例

visit(new_user_session_url(subdomain: @account.subdomain, port: Capybara.server_port))
Run Code Online (Sandbox Code Playgroud)

黄瓜测试通过 :rack_test 通过,但通过 :webkit 或 :selenium 失败

Unable to load URL: http://veumbogan8d11d7feca.example.com:8200/signin because of error loading http://veumbogan8d11d7feca.example.com:8200/signin: Unknown error (Capybara::Webkit::InvalidResponseError)
Run Code Online (Sandbox Code Playgroud)

webkit_debug 输出:

Finished "EnableLogging" with response "Success()" 
Wrote response true "" 
Received "Visit" 
Started "Visit" 
Load started 
"Visit" started page …
Run Code Online (Sandbox Code Playgroud)

selenium capybara ruby-on-rails-3 capybara-webkit

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