Tag: ruby

什么是“Ruby方式”一次迭代两个数组

更多的语法好奇心比解决问题… 我有两个相等长度的数组,并且希望一次迭代它们,例如,在某个索引处输出它们的值。 @budget = [ 100, 150, 25, 105 ] @actual = [ 120, 100, 50, 100 ] 我知道我可以使用each_index和索引到数组,如下所示: @budget.each_index do |i| puts @budget[i] puts @actual[i] end 有没有一种Ruby方法可以做得更好? 像这样的东西? # Obviously doesn't achieve what I want it to – but is there something like this? [@budget, @actual].each do |budget, actual| puts budget puts actual end

如何在testing环境中运行Rails控制台并加载test_helper.rb?

背景:我在Thoughtbot的“Factory Girl”gem上遇到了一些问题,用它来创build单位和其他testing中使用的对象。 我想要去控制台并运行不同的Factory Girl调用来查看发生了什么事情。 例如,我想进去有做… >> Factory(:user).inspect 我知道你可以在不同的环境下运行控制台 $脚本/控制台RAILS_ENV =testing 但是当我这样做,工厂类是不可用的。 看起来好像test_helper.rb没有被加载。 我尝试了各种require调用,包括test_helper.rb的绝对path,但是它们的失败类似于: $ script/console RAILS_ENV=test >> require '/Users/ethan/project/contactdb/test/test_helper.rb' Errno::ENOENT: No such file or directory – /Users/ethan/project/contactdb/config/environments/RAILS_ENV=test.rb 格儿。 哎呀。

何时使用零,空白,空?

有没有指导如何区分.nil? , .blank? 和.empty? ? 我通常总是困惑于什么时候在我的应用程序中使用它们,因为它们似乎意味着相同的事物,但具有不同的含义。 有没有人有血淋淋的细节备忘单?

删除数据库表中的所有logging

如何在Ruby on Rails应用程序中删除其中一个数据库表中的所有logging?

升级到Capybara 2.0后如何点击项目列表中的第一个链接?

如何在这种情况下点击第一个链接: <div class="item"> <a href="/agree/">Agree</a> </div> <div class="item"> <a href="/agree/">Agree</a> </div> within ".item" do first(:link, "Agree").click end 我得到这个错误: Capybara::Ambiguous: Ambiguous match, found 2 elements matching css ".item" 没有within我得到这个错误: Failure/Error: first(:link, "Agree").click NoMethodError: undefined method `click' for nil:NilClass

创build符号数组

有没有更干净的方式来做这样的事情? %w[address city state postal country].map(&:to_sym) #=> [:address, :city, :state, :postal, :country] 我会想, %s会做我想要的,但事实并非如此。 它只是取括号内的所有内容,并把一个大的符号排除在外。 只是一个小小的烦恼。

rails + OSX上的MySQL:Library未加载:libmysqlclient.18.dylib

我刚刚开始使用Ruby(和rails)。 我使用rvm根据http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby gems进行了rvm 。 我有一切与sqlite工作得很好。 现在我想尝试将其转换为MySQL,因为这正是我所做的大部分工作。 在我的Gemfile中,我用mysql2replace了sqlite: group :development, :test do # gem 'sqlite3', '1.3.5' gem 'mysql2' gem 'rspec-rails', '2.9.0' end 但是当我尝试在MySQL中为rails创build数据库时,我得到: $ rake db:create –trace rake aborted! dlopen(/Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib Referenced from: /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle Reason: image not found – /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle 我见过其他的post,build议通过homebrew重新安装MySQL(我通过可下载的DMG安装),但是我不想这样做,因为我已经有其他几个其他非Ruby项目的其他数据库。 我确实有Rails正在寻找的文件; 它安装在/usr/local/mysql/lib/libmysqlclient.18.dylib 。 告诉Rails如何find它的最好方法是什么?

如何使用RVM更改我的Ruby版本?

我无法切换当前的Ruby版本: ➜ ~ rvm list rvm rubies ruby-1.9.2-p290 [ x86_64 ] ruby-1.9.3-p0 [ x86_64 ] ➜ ~ rvm use ruby-1.9.3-p0 RVM is not a function, selecting rubies with 'rvm use …' will not work.

如何在Rails控制台中获得漂亮的格式

我想要这样看起来不错: >> ProductColor.all => [#<ProductColor id: 1, name: "White", internal_name: "White", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">, #<ProductColor id: 2, name: "Ivory", internal_name: "Ivory", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">, #<ProductColor id: 3, name: "Blue", internal_name: "Light Blue", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">, #<ProductColor id: 4, name: "Green", internal_name: "Green", created_at: "2009-06-10 04:02:44", updated_at: […]

在Ruby中标记不推荐使用的代码的最佳实践?

我想标记一个方法已被弃用,所以使用它的人可以很容易地检查他们的代码并追上。 在Java中,你设置@Deprecated,每个人都知道这意味着什么。 那么有没有一种首选的方法(甚至工具)来标记和检查Ruby中的弃用?