我很快就开始了一个新项目,这次我想尝试使用一些更好的工具.最后一个项目,我为MySQL手工编写了我的所有数据库创建SQL.我希望有一些好的工具可以在MySQL中创建,维护和修改数据库模式.我的预算是我自己的口袋,所以免费(如在啤酒中)可能是最好的.:)
我有点不知所措.Rails 3中的Scopes的单元测试是否有意义?
一方面,我正在编写代码,我应该测试该代码.
但是,另一方面,基本上我的所有范围都是微不足道的.检查传递参数的一个变量几乎是我迄今为止最复杂的范围.
scope :author, proc { |author| where(:author_user_id => author }
该代码是微不足道的,并且或多或少地覆盖了实际使用范围的函数.
测试或不测试范围的最佳实践是什么?
我正在处理一堆由字符串组成的数组,而且我写过很多次 .delete_if { |str| str.empty? }
现在,我知道我可以自己将这个方法添加到数组类中,但是我希望有一种内置的方法来实现这一点,而不需要在基类中添加非标准方法.与向基类添加方法一样有趣的是,出于可维护性的原因,我不想这样做.
是否有内置的方法来处理这个?
鉴于以下代码片段,是否有任何明显的差异?
public boolean foo(int input) {
if(input > 10) {
doStuff();
return true;
}
if(input == 0) {
doOtherStuff();
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
与
public boolean foo(int input) {
if(input > 10) {
doStuff();
return true;
} else if(input == 0) {
doOtherStuff();
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
或者使用这段代码,单退出原则会更好吗?
public boolean foo(int input) {
boolean toBeReturned = false;
if(input > 10) {
doStuff();
toBeReturned = true;
} else if(input == 0) {
doOtherStuff();
toBeReturned …
Run Code Online (Sandbox Code Playgroud) 我对RoR开发的重视程度越来越高.ERB对我不太合适.我之前用JSP做了一次.即使逻辑是特定于视图的,在我的标记中嵌入Ruby代码也不会是一个好的计划.也许我的恐惧是没有根据的,但感觉很危险.另外,还有很多打字.
我找到了HAML,我正在给它一些评价.如果它是一个很好的选择,也许你可以为它提供一些好的资源.
除了HAML之外,Rails View层还有其他ERB替代方案吗?
我对ERB的担忧是否不合理?
我在Asset Pipeline中使用Rails 3.1和SCSS.无论如何都要访问SCSS文件中的Rails助手或控制器数据?就像是...
#main {
background-color: #{current_user.preferences.background_color}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以自己设置,$variables
但我不确定如何从控制器的数据中填充它们.
我有一个Buildr扩展,我将其打包为gem.我有一组脚本要添加到包中.目前,我将这些脚本存储为我正在写入文件的大文本块.我希望有单独的文件,我可以直接复制或读/写回来.我希望将这些文件打包到gem中.我没有问题将它们打包(之前只是将它们粘贴在文件系统中rake install
),但我无法弄清楚如何访问它们.是否有Gem Resources捆绑类型的东西?
是否有一种更简单,更清晰的方式来编写这样的代码:
(1..10).each do |i|
(1..10).each do |j|
(1..10).each do |k|
(1..10).each do |l|
puts "#{i} #{j} #{k} #{l}"
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
理想情况下,我可以做...
(1..10).magic(4) { |i, j, k, l| puts "#{i} #{j} #{k} #{l}" }
Run Code Online (Sandbox Code Playgroud)
甚至更好......
magic(10, 4) { |i, j, k, l| puts "#{i} #{j} #{k} #{l}" }
Run Code Online (Sandbox Code Playgroud)
如果没有内置的东西,我怎么写一个类似上一个的方法?
除了下面两个语句的编码风格之外还有什么区别吗?
/regex/ =~ "some_string_with_regex"
"some_string_with_regex" =~ /regex/
您可以使用 splat 运算符来解构数组。
def foo(arg1, arg2, arg3)
#...Do Stuff...
end
array = ['arg2', 'arg3']
foo('arg1', *array)
Run Code Online (Sandbox Code Playgroud)
但是有没有办法破坏选项类型的哈希值呢?
def foo(arg1, opts)
#...Do Stuff with an opts hash...
end
opts = {hash2: 'bar', hash3: 'baz'}
foo('arg1', hash1: 'foo', *opts)
Run Code Online (Sandbox Code Playgroud)
如果不是原生 ruby,Rails 是否添加了类似的东西?
目前我正在做这件事
foo('arg1', opts.merge(hash1: 'foo'))
Run Code Online (Sandbox Code Playgroud)