【问题标题】:Debugging in rails Console在 Rails 控制台中调试
【发布时间】:2014-01-24 14:06:18
【问题描述】:

我有这个脚本,我想在 Rails 控制台中测试

Gem.find_files("models/*.rb").each do |f| 
  filename = File.basename(f, '.*')
  class_name_symbol = filename.classify.to_sym
  autoload class_name_symbol, "models/#{filename}"
end

我想做的是在控制台中打印出结果,但只能使用

输出数组
 Gem.find_files("models/*.rb")

返回这个

["/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/portfolio_sector.rb", "/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/post.rb", "/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/image.rb", "/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/message.rb", "/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/sector.rb", "/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/portfolio.rb", "/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/category.rb"] 

感谢提示

使用 answer 后输出为

models/portfolio_sector
models/post
models/message
models/sector
models/portfolio
models/category
=> ["/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/portfolio_sector.rb", "/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/post.rb", "/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/image.rb", "/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/message.rb", "/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/sector.rb", "/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/portfolio.rb", "/home/richardlewis/.rvm/gems/ruby-1.9.3-p448@myblogView/bundler/gems/blogModels-8360dfc861ad/lib/models/category.rb"] 

不确定为什么数组在末尾?

编辑:

该脚本应该获取数组中的每个项目并自动加载包含在模型/#{filename} 中的文件。我想在控制台中打印出所有模型/#{filename} 路径以确保它们是正确的 -

【问题讨论】:

  • 只需在正确的位置插入puts。看我的回答。
  • 因为它从#each 方法返回一个枚举器,所以你得到了数组

标签: ruby ruby-on-rails-3 rails-console


【解决方案1】:
Gem.find_files("models/*.rb").each do |f| 
  filename = File.basename(f, '.*')

  # So, instead of passing this filename to autoload, you print it. Or do both.
  puts "models/#{filename}"

  # class_name_symbol = filename.classify.to_sym
  # autoload class_name_symbol, "models/#{filename}"
end && nil # suppress return value from `each`

【讨论】:

  • 调试打印是非常有用的技术。 :)
  • 是的,看起来是这样,我将在我的问题中发布输出,为什么数组会出现在末尾?
  • @Richlewis:因为它是each 的返回值。查看更新的答案。
  • 所以当我自动加载时我加载路径模型/投资组合,而不是数组中的路径?我只问我在 gem 中加载这些路径,它没有加载我的任何模型类
猜你喜欢
  • 1970-01-01
  • 2016-04-16
  • 2016-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 2011-05-11
  • 1970-01-01
相关资源
最近更新 更多