问题标签 [ruby-1.9]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 如何避免将魔术编码注释放在 Ruby 1.9 中每个 UTF-8 文件的顶部?
我有一个 Rails 项目,里面有很多西里尔字符串。
它在 Ruby 1.8 上运行良好,但 Ruby 1.9 假定源文件是 US-ASCII 编码的,除非您# encoding: utf-8
在源文件顶部提供注释。此时不考虑文件US-ASCII
。
有没有更简单的方法告诉 Ruby“这个应用程序是 UTF8 编码的。除非另有声明,否则请考虑所有和任何包含的源文件为 UTF8”?
更新:
我写了“如何在 Ruby 1.9 文件中自动插入编码:UTF-8 指令”,如果需要,它会自动附加编码指令。
ruby-on-rails - 如何处理“不兼容的字符编码:ASCII-8BIT 和 GBK”异常?
我正在阅读“使用 Rails.3rd 进行敏捷 Web 开发”。完成depot应用程序后,我输入了一些汉字作为用户名。但是我得到了这个错误,这似乎与Ruby1.9有关
我的环境是window xp、Ruby1.9 Rails 2.3.8和sqlite3。
以下是有关此错误的详细信息:
显示第 43 行出现的 app/views/layouts/store.html.erb:
不兼容的字符编码:ASCII-8BIT 和 GBK
提取的源代码(大约第 43 行):
40: <% if flash[:notice] -%>
41: <%=h 闪现[:notice] %>
42:<%结束-%>
43:<%=产量:布局%>
任何人都可以帮我解决这个问题吗?
ruby - 如何在 Google SketchUp 中更新 Ruby?
目前 Google SketchUp for Mac 有1.8.5
我觉得有点过时的 Ruby 版本。我可以通过以下命令将 Ruby 更新到 1.8.7(OSX 版本)
SketchUp 启动没有问题,Ruby 控制台显示版本 1.8.7。
1.9.2
现在我尝试更进一步并更新到1.9.2-rc2
. Google SketchUp 需要i386
二进制,可以通过以下命令生成
然后我将必要的文件复制到 SketchUp:
当我尝试启动 SketchUp 时,我收到以下错误报告
你能告诉我为什么吗?
更新1
Dan Rathbun做了一些测试,发现如下
在 Win32 上,当我试图让 Sketchup 加载任何 1.9.x 时,我得到了 ruby C 函数“rb_set_kcode”的“Entry point not found”,它不再在 1.9.x 中(它被重命名,而 Ruby 人没有将旧名称别名为新名称。)
基本上 Sketchup 在加载 Ruby 解释器后调用 rb_set_kcode 将字符编码设置为 UTF8。它适用于 1.8.x 分支中的任何 Ruby,但在 1.9.x 中,Ruby 项目完全重新设计了字符编码,并为所有 C 函数提供了新标识符,并添加了更多函数。
1.9.x 和 Sketchup 的解决方案似乎是 Sketchup 需要是“Ruby Version Agile”,这意味着 Google Guys 在 Boulder 的编码更改。
ruby - 禁用 Ruby 1.9.x 的 YARV 编译器
使用 ruby 1.9.x 与 1.8.7 从命令行运行我的规范之间的应用程序启动时间存在非常明显的差异。我的应用程序使用 ruby 1.8.7 启动比使用 ruby 1.9.1 或 1.9.2 快得多。应用程序启动差异约为 18 秒。我的应用程序使用 1.8.7 初始化大约需要 5 秒,使用 1.9.1 和 1.9.2 初始化需要 23 秒。
应用程序初始化时间对于生产来说不是什么大问题,但对于 BDD 开发来说却是一个非常大的问题。每次我更改我的代码并运行我的规范时,每次迭代我都必须额外等待 18 秒。
我假设此应用程序初始化时间归因于 YARV 在我的应用程序初始化时编译字节码。
我对我的 YARV 减慢我的应用程序初始化速度是否正确,有没有办法在命令行上禁用 YARV。只有在我运行我的规范时才能禁用 YARV 会非常好。
ruby - 为什么 Ruby 1.9 允许覆盖!!= !~?
||
Ruby 1.8 不支持某些类型的重载(例如/ or
、&&
/ and
、!
/ not
、 )有两个很好的理由?:
:
- 如果不对语言进行非常广泛的更改,就无法使用 Ruby 中的方法实现短路语义。
- Ruby 被硬编码为仅在布尔上下文中视为 false
nil
。false
第一个原因不适用于!
/not
但第二个原因仍然适用。这不像您可以使用!
while &&
/||
仍然是硬编码来引入您自己的类布尔对象。对于其他用途,已经~
有&
/的互补运算符|
。
我可以想象有很多代码期望!obj
与obj ? false : true
, 和!!obj
-同义,obj ? true : false
我什至不确定代码应该如何处理在布尔上下文中评估为真但!
非假的对象。
看起来 Ruby 不打算引入对其他错误值的支持。Ruby stdlib 中似乎没有任何内容可以覆盖!
,所以我没有找到任何示例。
它有一些我想念的非常好的用途吗?
regex - Ruby 1.9 正则表达式 Lookbehind Assertion & Anchors
Ruby 1.9 正则表达式支持后向断言,但在模式中传递锚点时我似乎遇到了困难。当在前瞻断言中传递锚点时,它运行得很好。
有谁知道如何使锚点在后向断言中像在前瞻中一样工作?
向后看是否需要特殊的转义序列或分组?
我已经在 1.9.1-p243、p376 和 1.9.2-preview3 中测试了这种行为,以防它被修补。
ruby-on-rails - RVM 和 MySQL 下的 Ruby 1.9.2 已经初始化常量警告
在 RVM 下运行带有 Ruby 1.9.2.rc2 的 Rails 3 RC 时,我不断从 MySQL 驱动程序包中收到大量错误,如下所示:
这显示在rails console
单元测试中,任何需要完整 Rails 堆栈的东西,但不是在同一环境中直接使用 Sequel 的脚本。
尽管捆绑包本身确实加载并且 MySQL 驱动程序确实工作,但大量警告是通过 Rails 运行的任何内容的前言。通常这是mysql
由于 Rails 环境中某处的 gem 的冗余负载造成的。gem 在 Gemfile 中声明:
我想这是 Rails 自动加载器无法理解 Mysql 库已经加载,并再次加载它。有没有简单的方法来解决这个问题?
更新:
加载mysql
或mysqlplus
同时加载,否则你会收到这样的警告。mysqlplus
包括 Sequel 的所有功能mysql
并且是 Sequel 的依赖项。
ruby-on-rails-3 - Geokit Gem 1.5 和 Ruby 1.9.2 => “不兼容的字符编码:UTF-8 和 ASCII-8BIT”
我目前正在使用最前沿的东西编写一个 Rails 应用程序。Rails3、rSpec2、Ruby 1.9.2 和 Geokit 1.5.0。当我尝试对具有不在 ASCII-8Bit 中的特殊字符的地址进行地理编码时,我收到此错误:
不兼容的字符编码:UTF-8 和 ASCII-8BIT
跟踪是这样的:
我# coding: utf-8
在所有相关文件(规格、工厂和型号)中都使用过。然而,当我使用像“Elsassers Straße 27”这样的地址时,我得到了这个错误。
有什么提示吗?我认为 Geokit 已经与 1.9.1 兼容,因此也与所有这些新编码的东西兼容。
ruby - 将行追加到 csv 文件 Ruby 1.9 CSV lib
使用 Ruby 1.9 和 CSV 库,我似乎无法追加一行。文档中的示例打开文件,并覆盖该行。将行附加到文档的正确方法是什么?
文档中的示例:
ruby-on-rails - 安装了 ruby-1.9 (rvm) 和 rails 3,mongrel 或 Thin 使用系统 ruby
我正在使用 rvm
和:
但是,当启动 rails(使用 webrick 或 Thin)时,使用的 ruby 解释器是 ruby 1.8.7:
为什么 Rails 服务器使用系统 ruby 而不是本地 ruby?