小编ans*_*hul的帖子

捕获ruby异常中的行号

请考虑以下ruby代码

test.rb:

begin

  puts
  thisFunctionDoesNotExist
  x = 1+1
rescue Exception => e
  p e
end
Run Code Online (Sandbox Code Playgroud)

出于调试目的,我希望救援块知道该文件的第4行发生了错误.这样做有干净的方法吗?

ruby exception

48
推荐指数
4
解决办法
2万
查看次数

是否可以在ruby中为to_yaml指定格式化选项?

代码

require 'yaml'
puts YAML.load("
is_something:
  values: ['yes', 'no']
").to_yaml
Run Code Online (Sandbox Code Playgroud)

产生

--- 
is_something: 
  values: 
  - "yes"
  - "no"
Run Code Online (Sandbox Code Playgroud)

虽然这是一个正确的yaml,但是当你有一个数组哈希时,它看起来很丑陋.有没有办法让我to_yaml生产yaml的内联阵列版本?

可以传递选项哈希, to_yaml但是如何使用它?

编辑0:感谢PozsárBalázs.但是,从ruby 1.8.7(2009-04-08 patchlevel 160)开始,选项哈希不像宣传的那样工作.:(

irb
irb(main):001:0> require 'yaml'
=> true
irb(main):002:0> puts [[ 'Crispin', 'Glover' ]].to_yaml( :Indent => 4, :UseHeader => true, :UseVersion => true )
--- 
- - Crispin
  - Glover
=> nil
Run Code Online (Sandbox Code Playgroud)

ruby yaml

23
推荐指数
3
解决办法
2万
查看次数

你如何扩展/继承elixir模块?

假设一个elixir库定义:

defmodule Decoder do

  def decode(%{"BOOL" => true}),    do: true
  def decode(%{"BOOL" => false}),   do: false
  def decode(%{"BOOL" => "true"}),  do: true
  def decode(%{"BOOL" => "false"}), do: false
  def decode(%{"B" => value}),      do: value
  def decode(%{"S" => value}),      do: value
  def decode(%{"M" => value}),      do: value |> decode
  def decode(item = %{}) do
    item |> Enum.reduce(%{}, fn({k, v}, map) ->
      Map.put(map, k, decode(v))
    end)
  end
end
Run Code Online (Sandbox Code Playgroud)

我想定义一个模块MyDecoder,它只是def decode向上面的模块添加一个.在oo语言中,这将通过某种继承/ mixin/extends来完成.

我如何在长生不老药中做到这一点?

elixir

7
推荐指数
3
解决办法
7044
查看次数

双斜杠apache配置

我正在部署一个ror应用程序,现在我必须重写url(在apache中)

  • 在网址中添加前缀www
  • 添加/到网址的末尾

所以我采取了以下方法:

RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
RewriteCond %{HTTP_HOST} ^foo\.com
RewriteRule ^(.*)$ http://www.foo.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

问题是它将两个尾部斜杠附加到我的URL所以例如资源/问题/问题正在变为:

http://foo.com//question/ask
Run Code Online (Sandbox Code Playgroud)

我试图在我的所有重写规则之前添加以下规则以尝试删除双//:

RewriteCond %{REQUEST_URI} ^//
RewriteRule ([^/]*)/+(.*) http://www.foo.com/$1/$2 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

但它没有工作..任何想法扯掉所有额外的"//"添加到网址?

mod-rewrite apache2

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

如何使用NFC Android阅读MifareClassic卡?

我正在使用NFC Android编程,我想阅读Mifare Classic卡.有人知道如何阅读这种卡片上的扇区吗?

我的问题是transceive()方法.我不知道如何使用它来读取扇区,例如读取扇区1.

身份验证方法返回true,表示身份验证已完成.在身份验证之后,扇区应该为任何IO操作做好准备,但每当我使用readBlock()方法或者transmitive()方法时,我都会遇到IOException异常("收发失败").我找不到任何使用Mifare Classic的例子,所以我想知道是否可以用这个API阅读Mifare Classic.

亲切的问候.

android rfid nfc mifare

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

标签 统计

ruby ×2

android ×1

apache2 ×1

elixir ×1

exception ×1

mifare ×1

mod-rewrite ×1

nfc ×1

rfid ×1

yaml ×1