拆分字符串以获取Ruby的所有子字符串的最佳方法是什么?

例如,单词“stack”,我想得到一个像这样的数组: [‘s’, ‘st’, ‘sta’, … ‘stack’, ‘t’, ‘ta’, … , ‘c’, ‘ck’, ‘k’] 我是通过这样的代码做到的: def split_word(str) result = [] chas = str.split(“”) len = chas.size (0..len-1).each do |i| (i..len-1).each do |j| result.push(chas[i..j].join) end end result.uniq end 那有更好,更干净的方法吗? 谢谢。

如何在Ruby中模拟类似Java的注释?

如何在ruby中模拟类似Java的注释? (我们将得到答案,概括http://bens.me.uk/2009/java-style-annotations-in-ruby )

使用带ruby的memcache客户端

我试图使用memcache-client连接创建的amazon elastiCache集群端点。 但我得到了错误 MemCache::MemCacheError: No connection to server (testcachecluster.u098ed.cfg.us e1.cache.amazonaws.com:11211 DEAD (Timeout::Error: execution expired), will retr y at 2013-06-21 11:34:15 +0530) from C:/ProgramData/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/me mcache-client-1.8.5/lib/memcache.rb:863:in `with_socket_management’ from C:/ProgramData/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/me mcache-client-1.8.5/lib/memcache.rb:370:in `block in set’ from C:/ProgramData/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/me mcache-client-1.8.5/lib/memcache.rb:886:in `with_server’ from C:/ProgramData/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/me mcache-client-1.8.5/lib/memcache.rb:361:in `set’ from (irb):5 from C:/ProgramData/RailsInstaller/Ruby1.9.3/bin/irb:12:in `’ 但是正确使用amazon elastiCache集群端点的localhost instread。 irb(main):006:0> m = MemCache.new(‘localhost:11211’) => irb(main):007:0> m.set ‘abc’, […]

splat参数后的可选参数

这是我的计划: def calculate(*numbers, options = {}) add(numbers) if options[:add] subtract(numbers) if options[:add] == false end def add(*numbers) numbers.reduce(:+) end def subtract(*numbers) numbers.reduce(:-) end p calculate(1,2) 在第1行,它正在抱怨 tests.rb:1:语法错误,意外’=’,期待’)’ def calculate(* numbers,options = {}) ________________________________________________ ^ [以0.1秒结束,退出代码为1] 我认为这可能是Ruby中默认值的问题,因为在v1.9之前,你需要按顺序拥有所有默认值 – 但这不应该是问题,因为我的版本是 ruby 2.0.0p195 (2013-05-14) [i386-mingw32] 我已经尝试过将这些空间全部转换,因为当涉及到方法时,ruby似乎特别适合那些东西,但没有骰子。 可能是我的splat变量*numbers ?

database.yml和引用无效

我们刚刚将虚拟机升级到我认为相同的ruby配置(通过RVM …… Ruby 1.9.2,Rails 3.0.7,DataMapper 1.1.0)。 最大的区别是我们从MySQL 5.0到5.1。 出于某种原因,在我们的旧虚拟机上运行的完全相同的代码/ database.yml现在在我们尝试连接到数据库时的新代码上失败了。 问题是这个YAML: mysql_defaults: &mysql_defaults adapter: mysql encoding: UTF-8 username: user password: pass host: localhost development: <<: *mysql_defaults database: devdb production: <<: *mysql_defaults database: productiondb host: master.db.site.com 只是扩展到: “mysql_defaults” => { “adapter”=>”mysql”, “encoding”=>”UTF-8”, “username”=>”user”, “password”=>”pass”, “host”=>”localhost” }, “development” => { “adapter”=>”mysql”, “encoding”=>”UTF-8”, “username”=>”user”, “password”=>”pass”, “host”=>”localhost” }, “production” […]

猴子修补Devise(或任何Rails gem)

我在我的Rails项目中使用Devise身份validationgem,我想更改它在闪存警报中使用的密钥。 (设计使用:通知和:警告闪存键,但我想将它们更改为:成功和:错误,以便我可以使用Bootstrap显示漂亮的绿色/红色框。) 所以我希望能够以某种方式覆盖set_flash_message中的set_flash_message方法。 这是新方法: def set_flash_message(key, kind, options = {}) if key == ‘alert’ key = ‘error’ elsif key == ‘notice’ key = ‘success’ end message = find_message(kind, options) flash[key] = message if message.present? end 但我只是不知道该把它放在哪里。 更新: 基于答案,我使用以下代码创建了config / initializers / overrides.rb文件: class DeviseController def set_flash_message(key, kind, options = {}) if key == ‘alert’ key […]

如何在没有sudo的情况下安装gem

在我所有的gem安装上,我必须做sudo? 所以 sudo gem install rails 只会工作 gem安装导轨 不管用。 我该如何解决这个问题? 我安装了rvm – murtaza@murtaza-dev:~$ which rvm /home/murtaza/.rvm/bin/rvm murtaza@murtaza-dev:~$ which gem /home/murtaza/.rvm/rubies/ruby-1.9.3-p194/bin/gem 但是,当我使用gem进行任何操作时,我也会收到此警告 – murtaza@murtaza-dev:~$ gem /home/murtaza/.rvm/rubies/ruby-1.9.3-p194/bin/gem:4: warning: Insecure world writable dir /opt in PATH, mode 040777 编辑 我已经使用curl -L get.rvm.io | bash -s stable –auto重新安装了rvm curl -L get.rvm.io | bash -s stable –auto (没有sudo)。 但是,当我尝试安装gem时,它会给我以下错误 – […]

在Ruby的Test :: Unit :: TestCase中,如何覆盖initialize方法?

我正在与Test :: Unit挣扎。 当我想到unit testing时,我想到了每个文件的一个简单测试。 但是在Ruby的框架中,我必须改为: class MyTest < Test::Unit::TestCase def setup end def test_1 end def test_1 end end 但是每次调用test_ *方法都会运行setup和teardown。 这正是我不想要的。 相反,我想要一个只为整个类运行一次的设置方法。 但我似乎无法在不破坏TestCase的初始化的情况下编写自己的initialize()。 那可能吗? 还是我让这绝望地变得复杂?

在Ubuntu 14.04上安装Jekyll

我在Ubuntu上安装Jekyll时遇到了一些问题。 以下是我的一些版本: trevor~$ ruby -v ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux] trevor~$ gem -v 2.5.1 trevor~$ rvm -v rvm 1.26.11 (latest) by Wayne E. Seguin , Michal Papis [https://rvm.io/] 但是,当我尝试安装Jekyll时,我收到以下错误: trevor~$ gem install jekyll Building native extensions. This could take a while… ERROR: Error installing jekyll: ERROR: Failed to build gem native extension. current directory: […]

将长固定数转换为数组Ruby

在ruby中有一种方法可以将像74239这样的74239变成像[7,4,2,3,9]这样的数组吗?