2017-02-23 14 views
0

昨日follows-rake未定義のローカル変数やメソッドのエラーを修正する方法は?

desc 'send fetch request' 
    task send_fetch_request: :environment do 
      FacebookCrawl.new.process 
    end 

として、このタスクの作業をrakeタスクを持っているが、それは今日で動作していない理由を私は知りません。 私はコマンド -

rake send_fetch_request 

下のクラスの詳細でこれを実行しようとしています:

class FacebookCrawl 

    def initialize     
     fb_config = YAML.load_file(Rails.root.join("config/facebook_catalog.yml")) 
     @access_token = fb_config["facebook"]["access_token"] 
     @product_feed_ids = fb_config["facebook"]["product_feed_ids"] 
    end 

    def process 
     @product_feed_ids.each do |key,value| 
      feed_id = value["id"] 
      feed_url = value["feed_url"] 
      make_request(feed_id,feed_url,@access_token) 
     end 
    end 
end 

私はエラーの下に取得しています:、それは罰金働いていた昨日

rake send_fetch_request --trace 
    ** Invoke send_fetch_request (first_time) 
    ** Invoke environment (first_time) 
    ** Execute environment 
    ** Execute send_fetch_request 
    rake aborted! 
    NameError: undefined local variable or method `  FacebookCrawl' for main:Object 
    /Users/raj.sharma/Documents/Developer/Feed/lib/tasks/facebook_fetch_request_task.rake:3:in `block in <top (required)>' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `call' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `block in execute' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `each' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `execute' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/task.rb:194:in `block in invoke_with_call_chain' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/task.rb:180:in `invoke' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/application.rb:152:in `invoke_task' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block (2 levels) in top_level' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `each' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block in top_level' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/application.rb:117:in `run_with_threads' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/application.rb:102:in `top_level' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/application.rb:80:in `block in run' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/application.rb:178:in `standard_exception_handling' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/lib/rake/application.rb:77:in `run' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-12.0.0/exe/rake:27:in `<top (required)>' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/bin/rake:22:in `load' 
    /Users/raj.sharma/.rbenv/versions/2.2.2/bin/rake:22:in `<main>' 
    Tasks: TOP => send_fetch_request 

今日はレーキが不平を言っている理由はありません。助けてください。

+0

明らかに、FacebookCrawlは不明です。クラス定義を含むファイルを 'require'しましたか? – user1934428

+0

いいえ,,レーキのクラスを使用する必要がありますか?はいの場合はどうですか?私はレールが初めてです。しかし、それは昨日うまくいっていた。 – RajSharma

+0

FacebookCrawlの場所はどこですか? –

答えて

4

、エラーメッセージを注意深く見てください:

NameError: undefined local variable or method `  FacebookCrawl' for main:Object 
#     ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ↑↑↑ 

最初の景品は、定数を使用すると、未定義のローカル変数やメソッドためNameErrorを得るということです、そしてません。 2度目のプレゼントは、Rubyが苦情を申し立てる名前です。FacebookCrawlについて文句を言っていませんが、それは約  FacebookCrawlという文句を言います。 Rubyで

のみUnicode文字U + 0020 SPACEU + 0009 CHARACTER集計は空白として扱われます。 Rubyが単に名前の一部として扱う2つの中国語U + 3000 IDEOGRAPHIC SPACE文字があります。大文字ではないため、名前をローカル変数またはメッセージ送信として扱います。

おそらく、表示されている空白をエディタで有効にする必要があります。これはあなたのコードが私のエディタでどのように見えているかを示しています。問題がどこにあるのかを直ちに明らかにします:text editor with visible spaces showing the offending characters in different highlighting

+0

ありがとうございます。これらの空白を削除した後で動作します。どうもありがとう。 – RajSharma

+0

Atomエディタで空白を表示する方法を知っていますか? – RajSharma

+1

さて、あなたはそれが空白で表されていない**という点でそれを見ています。 FacebookCrawlを含む行には、空白を表す6つの灰色の点とFacebookの "F"までの点がなくなるので、そこから見ることができますその間にはRubyの意味で空白ではないものがあります。私は今Atomを使用していませんが、Atomが大きく違った方法で表示されないと驚いています。 – user1934428

-1

フォルダー内にfacebook_crawl.rbをコピーしてください。&サーバーを再起動してください。 これはビジネスロジックなので、モデル にないサービスフォルダ&にあるはずです。サービスディレクトリもアプリケーションディレクトリに作成してください。

+0

それを実行した後、それをレーキタスクに含める必要がありますか?はいの場合はどうですか? – RajSharma

+0

いいえ、ファイルをサービスフォルダにコピーして、あなたのレーキタスクを実行してください –

+0

私はapp/services/facebook_crawl.rbに移動し、サーバを再起動しました。まだ同じエラー。 – RajSharma

関連する問題