2012-01-22 8 views
4

のRails 3.1(カスタムrakeタスク)でのデータインポートファイルの正しい場所

desc "Import users." 
    task :import_users => :environment do 
     File.open("users.txt", "r").each do |line| 
      name, email, age = line.strip.split("\t") 
      u = User.new(:name => name, :email => email, :age => age) 
      u.save 
     end 
    end 

は私がimport_users.rakeとしてファイルを保存しました私のアプリのlib/tasksディレクトリに配置します。

No such file or directory - users.txt

私は.rakeファイル(LIB /作業ディレクトリ)と同じディレクトリにUSERS.TXTを置くが、次のとおりです。私は、コマンドラインでrake import_usersを実行しようとすると

は、しかし、私はこのエラーを取得しますそれは正しい場所ですか?

答えて

8

ファイル名は、レーキファイルが存在する場所ではなく、レーキタスクを実行するディレクトリからの相対パスです。私の知る限りでインポートデータのための「正しい」場所があり

File.open(File.join(Rails.root, "lib", "tasks", "users.txt"), "r") 

ではありませんが、lib/tasksディレクトリはそれをすべきではない。このように、あなたのレールのインストールディレクトリを含め、絶対パスを指定します。この目的のためにあなたのレールのルートの下に専用ディレクトリを作成し、上記と同じ方法でそれを指すようにしてください。

+0

あなたのソリューションを試してみると、このエラーが発生します: 'ディレクトリではありません -/Users/larson/Dev/myapp/lib/tasks/users.txt/r'、そこにあるはずですか? –

+0

私の例ではTypoが修正されました。 – Thilo

+0

素晴らしい、ソリューションのおかげで!すべてが今働きます。 –

関連する問題