标签: ruby

Ruby 1.9:如何才能正确地更新和缩写多字节字符串?

因此,matz决定保留upcasedowncase限制/[A-Z]/i在ruby 1.9.1中.

ActiveSupport::Multibyte长期以来在ruby 1.8.x中经历了很棒的i18n案例String#mb_chars.

但是,当在ruby 1.9.1下尝试时,它似乎不起作用.这是我写的一个简单的测试脚本,以及我得到的输出:

$ cat test.rb
# encoding: UTF-8

puts("@ #{RUBY_VERSION} " + (__ENCODING__ rescue $KCODE).to_s)
sd, su = "Iñtërnâtiônàlizætiøn", "IÑTËRNÂTIÔNÀLIZÆTIØN"
def ps(u, d, k); puts "%-30s:  %24s / %-24s" % [k, u, d] end
ps sd.upcase, su.downcase, "Plain ruby"

require 'rubygems'; require 'active_support'
ps sd.upcase, su.downcase, "With active_support"
ps sd.mb_chars.upcase.to_s, su.mb_chars.downcase.to_s, "With active_support mb_chars"

$ ruby -KU test.rb
@ 1.8.7 UTF8
Plain ruby                    :  IñTëRNâTIôNàLIZæTIøN / iÑtËrnÂtiÔnÀlizÆtiØn …
Run Code Online (Sandbox Code Playgroud)

ruby unicode utf-8 internationalization multibyte

55
推荐指数
3
解决办法
2万
查看次数

在Ruby中设置float的显示精度

是否可以在Ruby中设置float的显示精度?

就像是:

z = 1/3
z.to_s    #=> 0.33333333333333
z.to_s(3) #=> 0.333
z.to_s(5) #=> 0.33333
Run Code Online (Sandbox Code Playgroud)

或者我必须覆盖to_s方法Float

ruby floating-point precision

55
推荐指数
4
解决办法
7万
查看次数

Ruby 1.9哈希,键中有一个破折号

在ruby 1.9中有没有办法用新语法定义这个哈希?

irb> { a:  2 }
=> {:a=>2}

irb> { a-b:  2 }
SyntaxError: (irb):5: syntax error, unexpected tLABEL
{ a-b:  2 }
      ^
Run Code Online (Sandbox Code Playgroud)

与旧的,它的工作:

irb> { :"a-b" =>  2 }
=> {:"a-b"=>2}
Run Code Online (Sandbox Code Playgroud)

ruby syntax hash ruby-1.9

55
推荐指数
4
解决办法
2万
查看次数

在Rails 3中找到最新的记录

我想知道是否有办法在rails3中找到表中的最新记录?

谢谢

埃利奥特

ruby ruby-on-rails ruby-on-rails-3

55
推荐指数
2
解决办法
5万
查看次数

将两个数组合并为Hash

我有两个阵列:

members     = ["Matt Anderson", "Justin Biltonen", "Jordan Luff", "Jeremy London"]
instruments = ["guitar, vocals", "guitar", "bass", "drums"]
Run Code Online (Sandbox Code Playgroud)

我想要做的是组合这些,以便生成的数据结构像这样的哈希:

{"Matt Anderson"=>["guitar", "vocals"], "Justin Biltonen"=>"guitar", "Jordan Luff"=>"bass", "Jeremy London"=>"drums"}
Run Code Online (Sandbox Code Playgroud)

请注意,"Matt Anderson"的值现在是数组而不是字符串.任何Ruby巫师都在关注这个问题吗?

我知道几乎按照我想要的方式Hash[*members.zip(instruments).flatten]将它们组合在一起,但是首先将"吉他,人声"字符串转换为数组呢?谢谢.

ruby

55
推荐指数
3
解决办法
4万
查看次数

正则表达式,如何匹配多条线?

我正在尝试将From线路一直匹配到以下行的末尾Subject:

....
From: XXXXXX 
Date: Tue, 8 Mar 2011 10:52:42 -0800 
To: XXXXXXX
Subject: XXXXXXX
....
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有:

/From:.*Date:.*To:.*Subject/m
Run Code Online (Sandbox Code Playgroud)

但这与主题行的结尾不符.我尝试添加,$但没有效果.

ruby regex rubular

55
推荐指数
3
解决办法
5万
查看次数

如何在销毁记录时使carrierwave删除文件?

我正在使用carrierwave gem上传文件.

我已经构建了一个系统,供用户将图像标记为不合适,并且管理员可以删除图像.据我所知,在图像上调用destroy只会从表中删除路径名.

有没有办法让carrierwave实际删除文件本身?或者当我销毁图像路径时,rails会自动删除文件吗?

ruby ruby-on-rails carrierwave

55
推荐指数
2
解决办法
7万
查看次数

未定义的方法raise_in_transactional_callbacks ='for ActiveRecord :: Base:Class(NoMethodError)

在写这个问题之前,我查看了这些答案,但无法找到解决方案:

执行rails生成脚手架时出错用户名:string email:string

耙子流产了!用于ActiveRecord :: Base的未定义方法`migration_error =':Class

启动Rails服务器时出错:未定义方法'configure'


当我尝试启动一个新的应用程序(对于 Hartl的教程,第2章),在阶段脚手架开始时,我得到一个错误,如:

**undefined method `configure' for #<SampleApp2::Application:0x00000101a74610> (NoMethodError)**
Run Code Online (Sandbox Code Playgroud)

但是由于上面的例子,我编辑了development.rb文件:

DemoApp::Application.configure do
Run Code Online (Sandbox Code Playgroud)

(是的,我的应用程序名为demo_app,所以我改名了).

之后,我尝试再次运行scaffold,但遇到了一个新错误:

**method_missing': undefined method raise_in_transactional_callbacks=' for ActiveRecord::Base:Class (NoMethodError)**
Run Code Online (Sandbox Code Playgroud)

对类似情况的回应表明了一种迁移方法 - 它应该从文件development.rb中删除.同样,我试图在这个文件中找到raise_in_transactional_callbacks方法,但它不存在!另外,我会说在cmd中生成的完整代码非常大:

C:\Sites\demo_app>rails generate scaffold User name:string email:string
invoke  active_record
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/dynamic_matchers.rb:22:in `method_missing': undefined method `raise_in_transactional_callbacks=' for ActiveRecord::Base:Class (NoMethodError)
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/railtie.rb:166:in `block (3 levels) in <class:Railtie>'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/railtie.rb:165:in `each'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/railtie.rb:165:in `block (2 levels) in <class:Railtie>'
…
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.2/lib/rails/commands.rb:48:in …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

55
推荐指数
2
解决办法
3万
查看次数

Bundle命令找不到mac

我正在使用ruby,我得到了一个带有一些ruby程序的zip文件,它说:在文件夹中,运行bundle install以安装所需的软件包.

当我在终端中运行命令时,它说bundle command not found.

有人可以给我详细说明如何解决这个问题吗?

ruby macos bundler

55
推荐指数
3
解决办法
5万
查看次数

如何使用 Ruby 2.7.0 修复 Rails 的警告消息

有没有人解决这个问题Ruby 2.7.0

我使用rbenv并安装了 Ruby v2.7.0,然后使用Rails v6.0.2.1.

目前,通过运行其中之一

rails s
rails s -u puma
rails s -u webrick
Run Code Online (Sandbox Code Playgroud)

服务器已启动并且站点已提供服务,但在Console日志中我看到两条警告消息:

local:~/rcode/rb27$ rails s
=> Booting Puma
=> Rails 6.0.2.1 application starting in development 
=> Run `rails server --help` for more startup options
.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/stack.rb:37: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/static.rb:110: warning: The called method `initialize' is defined here
Puma starting in single …
Run Code Online (Sandbox Code Playgroud)

ruby warnings ruby-on-rails ruby-on-rails-6 ruby-2.7

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