如何强制子类在Ruby中实现方法.在Ruby中似乎没有一个抽象关键字,这是我在Java中采用的方法.还有另外一种类似Ruby的方法来强制抽象吗?
这是我到目前为止所做的.
我现在正在尝试为项目安装Ruby Enterprise Edition rvm install ree并收到以下错误:
$ rvm install ree
ree-1.8.7-2011.03 - #installing
ERROR: Error running './installer -a /Users/FaraazKhan/.rvm/rubies/ree-1.8.7-2011.03
--no-tcmalloc --dont-install-useful-gems ', please read
/Users/FaraazKhan/.rvm/log/ree-1.8.7-2011.03/install.log
ERROR: There has been an error while trying to run the ree installer. Halting
the installation.
Run Code Online (Sandbox Code Playgroud)
我已经尝试CC=/usr/bin/gcc-4.2 rvm install ree了同样的结果.
我曾经对红宝石,宝石和所有相关的东西都没有任何问题.但在安装X Code Developer Tools并升级到Lion后,宝石无法安装.
我得到每个宝石的以下错误.这是sqlite的消息作为示例:
Building native extensions. This could take a while...
ERROR: Error installing sqlite3:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.4 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.4/ext/sqlite3/gem_make.out
Run Code Online (Sandbox Code Playgroud)
什么地方出了错?怎么解决?
我是Ruby的新手,并且一直习惯于String.scan搜索第一次出现的数字.返回值是嵌套数组有点奇怪,但我只想[0][0]找到我想要的值.(我确信它有它的目的,只是我还没用过它.)
我刚刚发现有一种String.match方法.它似乎更方便,因为返回的数组不是嵌套的.
这是两个例子,首先是扫描:
>> 'a 1-night stay'.scan(/(a )?(\d*)[- ]night/i).to_a
=> [["a ", "1"]]
Run Code Online (Sandbox Code Playgroud)
那就是匹配
>> 'a 1-night stay'.match(/(a )?(\d*)[- ]night/i).to_a
=> ["a 1-night", "a ", "1"]
Run Code Online (Sandbox Code Playgroud)
我检查了API,但我无法区分差异,因为两者都提到了"匹配模式".
这个问题仅仅是出于好奇,关于什么scan可以做到这一点match不能,反之亦然.任何只有一个人可以完成的特定场景?是match劣等的scan?
我正在尝试解析从Excel电子表格生成的CSV文件.
这是我的代码
require 'csv'
file = File.open("input_file")
csv = CSV.parse(file)
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误
ArgumentError: invalid byte sequence in UTF-8
Run Code Online (Sandbox Code Playgroud)
我认为错误是因为Excel将文件编码到ISO 8859-1 (Latin-1)而不是编入UTF-8
请有人帮我解决这个问题
提前致谢.
我正在尝试使用Ruby来获得除法的剩余部分.
假设我们试图将208除以11.
决赛应该是"18剩余10"......我最终需要的是那个10.
这是我到目前为止所得到的,但它在这个用例中窒息(说剩下的是0).
division = 208.to_f / 11
rounded = (division*10).ceil/10.0
remainder = rounded.round(1).to_s.last.to_i
Run Code Online (Sandbox Code Playgroud) 我是.Net程序员,他希望在我当前和未来的Web应用程序中扩展并可能使用一些Ruby.查看Iron Ruby网站的最新版本是近一年前的:2011年3月13日.从那时起,他们的网站上也没有发布任何公告.
有了这一切,我想到了几个问题:
我最近在stackoverflow上看到过关于IronRuby的问题,所以显然人们正在使用它.我不确定他们是否支持遗留应用程序或进行新的开发工作.
是sortRuby的稳定吗?也就是说,对于处于平局状态的元素,它们sort之间的相对顺序是否保留在原始顺序中?例如,给定:
a = [
{id: :a, int: 3},
{id: :b, int: 1},
{id: :c, int: 2},
{id: :d, int: 0},
{id: :e, int: 1},
{id: :f, int: 0},
{id: :g, int: 1},
{id: :h, int: 2},
]
Run Code Online (Sandbox Code Playgroud)
是否保证我们总能得到
a.sort_by{|h| h[:int]}
Run Code Online (Sandbox Code Playgroud)
下列
[
{id: :d, int: 0},
{id: :f, int: 0},
{id: :b, int: 1},
{id: :e, int: 1},
{id: :g, int: 1},
{id: :c, int: 2},
{id: :h, int: 2},
{id: :a, int: 3},
]
Run Code Online (Sandbox Code Playgroud)
而不用于与所述元件之间的相对次序的任何变化 …
我有一个简单的Sinatra服务器,我通过textmate运行,但我无法从同一网络上的另一台计算机访问.
我在Mac OS 10.8.3上运行Ruby 1.9.3p327和Sinatra 1.4.1.防火墙已禁用.
我在不同的网络和计算机上测试了相同的场景.
计算机响应简单的ping但当我尝试telnet端口4567时,我无法建立连接.
我得到了一系列我希望转换为CSV的ActiveRecord模型.我尝试过研究像FasterCSV这样的宝石,但它们似乎只使用字符串和数组,而不是ActiveRecord模型.
简而言之,我想转换:
user1 = User.first
user2 = User.last
a = [user1, user2]
Run Code Online (Sandbox Code Playgroud)
至:
id,username,bio,email
1,user1,user 1 bio,user1 email
1,user2,user 2 bio,user2 email
Run Code Online (Sandbox Code Playgroud)
有一个简单的Rails方法来做到这一点?