我只是学习编程并决定尝试Ruby.我确定这是一个愚蠢的问题,但是教练正在讨论setter和getter方法,我很困惑.这是一个例子:
class Human
def noise=(noise)
@noise = noise
end
def noise
@noise
end
end
Run Code Online (Sandbox Code Playgroud)
从这个,实例化类,我可以把它说出来:
man = Human.new
man.noise=("Howdie!")
puts man.noise
Run Code Online (Sandbox Code Playgroud)
这导致了 Howdie!
现在令我困惑的是,教师说没有getter方法(两种方法中的第二种),就没有办法与实例变量@noise进行交互.
但是当我删除getter方法时,我仍然可以访问@noise,参见示例:
class Human
def noise=(noise)
@noise = noise
end
end
man = Human.new
puts man.noise=("Howdie!")
Run Code Online (Sandbox Code Playgroud)
这与使用它的getter方法相同.
所以现在我很困惑.为什么需要吸气剂?没有它,教师的意思是无法访问实例变量?他有可能使用旧版本的Ruby吗?
在此先感谢您的帮助.
似乎最常被接受的处理Selenium和测试的方法是避免使用事务夹具,然后在测试/场景之间使用像database_cleaner这样的东西.我最近遇到了以下文章,建议执行以下操作:
spec_helper.rb
class ActiveRecord::Base
mattr_accessor :shared_connection
@@shared_connection = nil
def self.connection
@@shared_connection || retrieve_connection
end
end
# Forces all threads to share the same connection. This works on
# Capybara because it starts the web server in a thread.
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
Run Code Online (Sandbox Code Playgroud)
对于性能而言,这似乎比替代品更好.有没有人有理由不这样做?
我想知道什么是使String.include?方法忽略大小写的最佳方法.目前我正在做以下事情.有什么建议?谢谢!
a = "abcDE"
b = "CD"
result = a.downcase.include? b.downcase
Run Code Online (Sandbox Code Playgroud)
编辑:怎么样Array.include?.数组的所有元素都是字符串.
是否可以在HAML中的link_to帮助器中添加html内容?
我试过这个,但我得到的只是语法错误:
= link_to "Other page", "path/to/page.html"
%span.icon Arrow
Run Code Online (Sandbox Code Playgroud)
预期产量:
<a href="path/to/page.html">Other Page<span class="icon">Arrow</span></a>
Run Code Online (Sandbox Code Playgroud) 如何在ruby中使用正则表达式将字符串与多个模式匹配.
我试图看一个字符串是否包含在前缀数组中,这不起作用,但我认为它至少证明了我要做的事情.
# example:
# prefixes.include?("Mrs. Kirsten Hess")
prefixes.include?(name) # should return true / false
prefixes = [
/Ms\.?/i,
/Miss/i,
/Mrs\.?/i,
/Mr\.?/i,
/Master/i,
/Rev\.?/i,
/Reverend/i,
/Fr\.?/i,
/Father/i,
/Dr\.?/i,
/Doctor/i,
/Atty\.?/i,
/Attorney/i,
/Prof\.?/i,
/Professor/i,
/Hon\.?/i,
/Honorable/i,
/Pres\.?/i,
/President/i,
/Gov\.?/i,
/Governor/i,
/Coach/i,
/Ofc\.?/i,
/Officer/i,
/Msgr\.?/i,
/Monsignor/i,
/Sr\.?/i,
/Sister\.?/i,
/Br\.?/i,
/Brother/i,
/Supt\.?/i,
/Superintendent/i,
/Rep\.?/i,
/Representative/i,
/Sen\.?/i,
/Senator/i,
/Amb\.?/i,
/Ambassador/i,
/Treas\.?/i,
/Treasurer/i,
/Sec\.?/i,
/Secretary/i,
/Pvt\.?/i,
/Private/i,
/Cpl\.?/i,
/Corporal/i,
/Sgt\.?/i,
/Sargent/i,
/Adm\.?/i,
/Administrative/i,
/Maj\.?/i,
/Major/i,
/Capt\.?/i,
/Captain/i,
/Cmdr\.?/i,
/Commander/i,
/Lt\.?/i,
/Lieutenant/i,
/^Lt Col\.?$/i,
/^Lieutenant Col$/i, …Run Code Online (Sandbox Code Playgroud) 我有一个非常大的字符串需要转义它中的所有单引号,所以我可以将它提供给JavaScript而不会让它失望.我无法控制外部字符串,因此无法更改源数据.
例:
Cote d'Ivoir -> Cote d\'Ivoir
Run Code Online (Sandbox Code Playgroud)
(实际的字符串很长,包含很多单引号)
我正在尝试通过使用gsub字符串,但无法让它工作:
a = "Cote d'Ivoir"
a.gsub("'", "\\\'")
Run Code Online (Sandbox Code Playgroud)
但这给了我:
=> "Cote dIvoirIvoir"
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
a.gsub("'", 92.chr + 39.chr)
Run Code Online (Sandbox Code Playgroud)
但得到了相同的结果; 我知道它与正则表达式有关,但我从来没有得到那些.
我理解为了在Ruby中对数组元素求和,可以使用inject方法,即
array = [1,2,3,4,5];
puts array.inject(0, &:+)
Run Code Online (Sandbox Code Playgroud)
但是如何在对象数组中求和对象的属性呢?
有一个对象数组,每个对象都有一个属性"现金",例如.所以我想将他们的现金余额总计为一个.就像是...
array.cash.inject(0, &:+) # (but this doesn't work)
Run Code Online (Sandbox Code Playgroud)
我意识到我可能会创建一个仅由物业现金组成的新阵列,并总结一下,但如果可能的话,我正在寻找一种更清洁的方法!
我试图在Sublime Text中打开一个gem,但没有成功.我安装了Bundler.这是正在发生的事情.
在命令行中:
$bundle open Devise
To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR
Run Code Online (Sandbox Code Playgroud)
当我去Bundler网站时,它说,
打开给定捆绑gem的源目录:
$ bundle打开GEM
这将在编辑器中打开提供的GEM的源目录.为此,必须设置
EDITOR或BUNDLER_EDITOR环境变量.
我是所有这一切的新手.设置我的环境变量或环境变量的具体步骤是什么?我在Mac上,使用Sublime Text.EDITORBUNDLER_EDITOR
谢谢.
ruby command-line ruby-on-rails environment-variables bundler
我正在新的macOS Sierra setting中建立我的开发环境.
首先,我安装了Rbenv,Ruby(2.3.1),Homebrew等最新版本的MySQL(5.7.15).
$ brew install mysql
$ mysql.server start
Run Code Online (Sandbox Code Playgroud)
好的,MySQL已初始化.是时候安装mysql2 gem了......
$ gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config
Run Code Online (Sandbox Code Playgroud)
但它没有用.
Building native extensions with: '--with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config'
This could take a while...
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
current directory: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2
/Users/macuser/.rbenv/versions/2.3.1/bin/ruby -r ./siteconf20160921-16853-x1boio.rb extconf.rb --with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... …Run Code Online (Sandbox Code Playgroud)