Вопрос

I have this script that i would like to test within the rails console

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

what i would like to do is print out the results in the console but can only get as far as outputting the array using

 Gem.find_files("models/*.rb")

which returns this

["/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"] 

tips appreciated

After using answer the output is

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"] 

not sure why the array is at the end?

Edit :

The script is supposed to take each item in the array and autoload the file contained in models/#{filename}. I would like to print out all the model/#{filename} paths in the console to ensure they are correct –

Это было полезно?

Решение

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`
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top