小编kch*_*kch的帖子

Ruby 1.9,YAML和字符串编码:如何过一种理智的生活?

在我看来,带有ruby 1.9的YAML库是编码聋的.

这意味着当生成YAML时,它将获取任何字节串,并转义任何不输出干净ASCII的字节序列.那是蹩脚的,但可以接受.

我的问题是另一种方式.从所述YAML转储加载内容时.

在下面的示例中,我创建了一个UTF-8字符串,转储它,它与类型一起转储!binary.当我加载它时,它具有编码ASCII-8BIT.在示例的最后,我尝试使用另一个UTF-8字符串连接原始字符串和重新加载的字符串.后者将以失败告终Encoding::CompatibilityError.

require 'yaml'
s0 = "Iñtërnâtiônàlizætiøn"
y  = s0.to_yaml
s1 = YAML::load y
puts s0                 # => Iñtërnâtiônàlizætiøn
puts s0.encoding        # => UTF-8
puts s1                 # => Iñtërnâtiônàlizætiøn
puts s1.encoding        # => ASCII-8BIT
puts y                  # => --- !binary |
                        #    ScOxdMOrcm7DonRpw7Ruw6BsaXrDpnRpw7hu
puts "ñårƒ" + s0        # => ñårƒIñtërnâtiônàlizætiøn
puts "ñårƒ" + s1        # => Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ASCII-8BIT
Run Code Online (Sandbox Code Playgroud)

我想很清楚当你处理一些包含嵌套哈希和带叶子串的数组的YAML源时,这会很快导致麻烦.

目前我有一些代码遍历所有哈希和数组并调用force_encoding每个字符串.至少可以说,这是不雅观的.

我现在正在寻找的是一种方法来告诉YAML::load任何进来的字符串应该被视为,因此其编码设置为UTF-8.


理想情况下,ruby的YAML应该使用正确的编码来注释它转储的字符串.有一个Ya2YAML项目试图转储UTF-8安全YAML.我不确定它有多远.如果有人玩过它,我欢迎任何想法.

无论如何,我仍然有这些转储没有任何编码信息来处理.虽然我知道它们都是UTF-8.

ruby string encoding yaml ruby-1.9

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

AppleScript可以收听事件吗?

我想编写一个脚本,当在某个应用程序上打开文档时,或者在应用程序退出之前,它会采取行动等.

有没有办法将脚本附加到应用程序中的事件?AppleScript是否支持任何形式的挂钩?

如果没有,我可以通过自己的方式获得我想要的东西吗?

events hook applescript event-handling listener

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

什么是在Mac上绘制UI线框的最佳应用程序?(为什么)

我想为Web和桌面应用程序绘制用户界面.

我需要一些比omnigraffle更少印刷的东西.想像素!

此外,需要良好的构建块(又名模板).表单元素,表格视图等

macos user-interface wireframe

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

如何确定已编译的Objective-C应用程序是否正在使用垃圾回收?

对于我在Mac上的任何应用程序,有没有办法判断它是在启用GC的情况下编译的,还是在进行手动内存管理?

macos cocoa garbage-collection objective-c

10
推荐指数
2
解决办法
1474
查看次数

什么是相当于BSD的'tail -n100'的Solaris?

我已经看了一千次,我总是忘记它,所以,这里是永恒的:

Solaris有一些尴尬的语法tail.

我该如何做相当于BSD的?tail -nN

我想要的是尾部输入的最后N行.

unix bsd solaris tail

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

我可以运行受密码保护的只读git服务器吗?

我需要一个能够从git存储库中获取但不能推送到它的应用程序,因此,这是只读部分.这可以通过git守护进程轻松完成.

最重要的是,我需要访问所述存储库以受密码保护,包括用于读取它.因此,在任何提取发生之前,应用程序将需要进行身份验证.

它可行吗?用git守护进程?别的什么?http + auth可能吗?

git version-control

9
推荐指数
2
解决办法
7589
查看次数

Ruby:C类包含模块M; 包括M中的模块N不影响C.什么给出?

更详细地说,我有一个模块Narf,它为一系列类提供基本功能.具体来说,我想影响所有继承的类Enumerable.所以我include NarfEnumerable.

Array是一个Enumerable默认包含的类.然而,它并没有受到Narf模块中后期包含的影响.

有趣的是,包含后定义的类Narf来自Enumerable.

例:

# This module provides essential features
module Narf
  def narf?
    puts "(from #{self.class}) ZORT!"
  end
end

# I want all Enumerables to be able to Narf
module Enumerable
  include Narf
end

# Fjord is an Enumerable defined *after* including Narf in Enumerable
class Fjord
  include Enumerable
end

p Enumerable.ancestors    # Notice that Narf *is* there
p Fjord.ancestors         # …
Run Code Online (Sandbox Code Playgroud)

ruby module

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

有没有办法在不加载rubygems的情况下调用ruby1.9?

所以ruby 1.9非常好,因为它会自动需要rubygems,因此当你打电话require 'somegem'而不需要首先需要rubygems时它会起作用,这通常很棒.

但我有大量使用ruby的shell脚本,它们通常不依赖于rubygems.Shell工具应该立即运行,并且什么都不加载rubygems是一个主要障碍,主要是因为它涉及一堆磁盘操作与分散的小文件.

我希望能够在运行这些shell脚本时告诉ruby跳过加载gem.理想情况下,像#!ruby --no-rubygemsshebang线一样.

有这样的事吗?或者可能是一个编译选项,它将告诉ruby ruby​​gems必须手动需要?

ruby shell rubygems ruby-1.9

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

使用自定义gem源的Bundler"无法找到gem ..."错误

在我的Gemfile中,我需要使用此行的自定义源中的gem:

gem 'very-secret-gem', source:'https://foo.example.com/'
Run Code Online (Sandbox Code Playgroud)

bundle install 完成罚款:

$ bundle install
Fetching source index from https://foo.example.com/
Fetching source index from https://foo.example.com/
Fetching gem metadata from https://rubygems.org/........
…
Resolving dependencies...
…
Installing very-secret-gem 1.5.1
…
Bundle complete! 47 Gemfile dependencies, 116 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
Run Code Online (Sandbox Code Playgroud)

但运行使用ruby的命令失败(这里为空Rakefile):

$ bundle exec rake -T
Could not find gem 'very-secret-gem (>= 0) ruby' in rubygems repository https://foo.example.com/.
Source does not contain any versions of 'very-secret-gem …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems bundler

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

将自签名证书添加到Heroku应用程序

我正在尝试将自签名证书添加到Heroku上的某个应用程序中.我跟随开发中心的指南.

https://devcenter.heroku.com/articles/sslhttps://devcenter.heroku.com/articles/ssl-certificate-self

在我生成自签名证书后,我尝试通过heroku证书添加证书:add server.crt server.key

并收到错误消息:解决信任链...失败!没有给出的证书是域名证书.

我不确定这意味着什么或如何解决问题.

ssl heroku self-signed

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