hi-ogawa / wordCollector

https://chrome.google.com/webstore/detail/word-collector/jfeinpeakgoblpcelmhdhajmdoeoifap
0 stars 0 forks source link

road to deployment #35

Closed hi-ogawa closed 9 years ago

hi-ogawa commented 9 years ago
hi-ogawa commented 9 years ago

this is what I'm gonna do.

hi-ogawa commented 9 years ago

copy previous data by running $ rake run_rb[move_data.rb] on rails root directory.

# lib/tasks/mytask.rake
desc "run .rb file in rails console"
task :run_rb, [:filename] do |t, args|
  sh "bundle exec rails runner \"eval(File.read 'lib/tasks/#{args[:filename]}')\""
end

and

# lib/tasks/move_data.rb
require 'rest-client'

base = "http://ec2-52-69-132-73.ap-northeast-1.compute.amazonaws.com"
headers = {Authorization: "..."}
pic_base = "/home/hiogawa/myapps/wordCollectorRails/public"

me = User.first

me.categories.map do |c|

  # create categories
  resp = RestClient.post "#{base}/api/categories",
                         {category: {name: c.name, description: ""}},
                         headers
  c_ = JSON.parse(resp)

  c.posts.map do |p|

    begin
      # create items
      RestClient.post "#{base}/api/items",
                      {
                        category_id: c_["category"]["id"],
                        item: {
                          word:     p.word,
                          sentence: p.sentence,
                          meaning:  p.meaning,
                          picture:  File.new(pic_base + p.picture.url.sub(/\?.*/, ""), 'rb')
                        }
                      },
                      headers
    rescue => e
      puts p
      puts e.response
    end
  end
end