

Ruby on Railsにて、Web APIを定期的に実行し、データを加工、DBにインサートする処理を実装しようと思っているのですが、  
下に記載されている原因不明のエラーでモデルの呼び出しができない状態です。

lib/tasks/repository.rake

[code]

    require 'net/http'
    require 'uri'
    
    namespace :repository do
      desc "get repositories list and delete old repositories list at 11:00 every day"
      task :get_repositories do
        save_repositories
        delete_repositories
      end
    
      def save_repositories
        languages.each do |language|
    
          uri =
              URI.parse("https://api.github.com/search/repositories?q=language:#{language}&sort=stars&order=desc")
          https = Net::HTTP.new(uri.host, uri.port)
          https.use_ssl = true
          response = https.start {
            https.get(uri.request_uri)
          }
    
          if response.code == '200'
            results = ActiveSupport::JSON.decode response.body
            results["items"].each do |repository|
              Repository.create(name: repository["name"], language: repository["language"],
                                url: repository["html_url"], scores: repository["score"], issues: repository["issues"])
            end
          end
        end
      end
    
      def delete_repository
        puts "Hello World"
      end
    
      def languages
        ["Javascript", "Ruby", "Python", "Java", "Go"]
      end
    end
    
[/code]

app/models/repository.rb

[code]

    class Repository < ApplicationRecord
    
    end
    
[/code]

エラー内容：

[code]

    rake aborted!
    NameError: uninitialized constant Repository
    
[/code]

もし情報が不足していましたらお手数ですがコメントをお願いいたします。


CC BY-SA 4.0
2018-06-25T04:53:36.113
45038
2018-06-25T05:33:06.817
26282
question
ruby-on-rails ruby
Ruby on Railsのバッチ処理にてモデルを読み込めない事象に関して

[code]

    task get_repositories: :environment do
      hogehoge
    end
    
[/code]

のように、 environment を依存タスクとして指定してやると、解決するような気がします。


CC BY-SA 4.0
2018-06-25T05:33:06.817
45042
2018-06-25T05:33:06.817
754
45038
answer