请考虑以下ruby代码
test.rb:
begin
puts
thisFunctionDoesNotExist
x = 1+1
rescue Exception => e
p e
end
Run Code Online (Sandbox Code Playgroud)
出于调试目的,我希望救援块知道该文件的第4行发生了错误.这样做有干净的方法吗?
代码
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) 假设一个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来完成.
我如何在长生不老药中做到这一点?
我正在部署一个ror应用程序,现在我必须重写url(在apache中)
所以我采取了以下方法:
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)
但它没有工作..任何想法扯掉所有额外的"//"添加到网址?
我正在使用NFC Android编程,我想阅读Mifare Classic卡.有人知道如何阅读这种卡片上的扇区吗?
我的问题是transceive()方法.我不知道如何使用它来读取扇区,例如读取扇区1.
身份验证方法返回true,表示身份验证已完成.在身份验证之后,扇区应该为任何IO操作做好准备,但每当我使用readBlock()方法或者transmitive()方法时,我都会遇到IOException异常("收发失败").我找不到任何使用Mifare Classic的例子,所以我想知道是否可以用这个API阅读Mifare Classic.
亲切的问候.