I''m trying to get this plugin to work: https://github.com/mettadore/geoinfo It basically gets you all the cities and states in the United States. However, it reads: "I haven’t added a rake task to populate the database yet. But the YAML files are in vendor/plugins/geoinfo/lib/db/*.yml" Alright, no problem, I''ll do it manually then. However, I look in the file, and I find stuff that looks like this: - !ruby/object:GeoinfoState attributes: name: STATE abbr: ABBR country: COUNTRY type: TYPE id: "ID" - !ruby/object:GeoinfoState attributes: name: ALASKA abbr: AK country: UNITED STATES OF AMERICA type: STATE id: "1" - !ruby/object:GeoinfoState attributes: name: ALABAMA abbr: AL country: UNITED STATES OF AMERICA type: STATE id: "2" - !ruby/object:GeoinfoState attributes: name: ARKANSAS abbr: AR country: UNITED STATES OF AMERICA type: STATE id: "3" and so on The file name is states.yml. Now, my question is what exactly is this file? How do I use it? The syntax doesn''t exactly look like its a fixture... I''m confused on how I can populate my db tables with that file. Does anyone know how? What is that file used for? how? Thank you. -David -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On Tuesday, April 5, 2011 5:15:32 PM UTC-6, David Zhu wrote:> > I''m trying to get this plugin to work: > https://github.com/mettadore/geoinfo > > It basically gets you all the cities and states in the United States. > > However, it reads: "I haven’t added a rake task to populate the database > yet. But the YAML files are in vendor/plugins/geoinfo/lib/db/*.yml" > > Alright, no problem, I''ll do it manually then. However, I look in the file, > and I find stuff that looks like this: > > - !ruby/object:GeoinfoState > attributes: > name: STATE > abbr: ABBR > country: COUNTRY > type: TYPE > id: "ID" > > - !ruby/object:GeoinfoState > attributes: > name: ALASKA > abbr: AK > country: UNITED STATES OF AMERICA > type: STATE > id: "1" > > - !ruby/object:GeoinfoState > attributes: > name: ALABAMA > abbr: AL > country: UNITED STATES OF AMERICA > type: STATE > id: "2" > > - !ruby/object:GeoinfoState > attributes: > name: ARKANSAS > abbr: AR > country: UNITED STATES OF AMERICA > type: STATE > id: "3" > > > and so on > > The file name is states.yml. > > Now, my question is what exactly is this file? How do I use it? The syntax > doesn''t exactly look like its a fixture... >It is a YAML file (which, by default, your scaffolded fixtures are as well). It looks like the YAML was used to serialize some ruby objects. For example (irb session using 1.8.7): require ''yaml'' class GeoinfoState attr_accessor :attributes end x = GeoinfoState.new x.attributes = { :name => "ALASKA", :abbr => "AK", :country => "UNITED STATES OF AMERICA", :type => "STATE", :id => "1" } puts YAML.dump(x) --- !ruby/object:GeoinfoState attributes: :type: STATE :abbr: AK :country: UNITED STATES OF AMERICA :name: ALASKA :id: "1"> I''m confused on how I can populate my db tables with that file. Does anyone > know how? What is that file used for? how? >One way is to define a simple class (similar to what I did above) or ensure the geoinfo gem''s version is loaded. Then do something like: states = YAML.load_file(...) states.each do |s| State.create!(:name => s.name, ...) # where State is your model end If this isn''t a one-off action, you could even define a method to do something like this in your State class: require ''yaml'' class State < ActiveRecord::Base def self.import_from(filename) YAML.load_file(filename).each do |s| create!(...) end end end -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Thank you for the response So basically it* doesn''t* populate a database table? But instead, I retrieve it directly from the yaml file? -David -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On Tuesday, April 5, 2011 5:53:42 PM UTC-6, David Zhu wrote:> > Thank you for the response > > So basically it* doesn''t* populate a database table? But instead, I > retrieve it directly from the yaml file? > > -David > >Correct. It appears this file was just intended to store serialized objects, no database needed. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.