rabl を使用して rake タスクから json ファイルを作成しようとしています。以下に、テスト用の簡略化されたバージョンを示します。
URL を介して「articles.json」または「articles/2.json」を表示すると、期待される json 応答が得られます。
しかし、rake タスクを介して実行しようとすると、作成された jsonFile の @articles に常に null 値が含まれます。@articles.count と同じ回数 index.json.rabl ビューをレンダリングしますが、値は常に null です。
では、rake タスクで作成した @articles オブジェクトを Rabl.render に渡すにはどうすればよいでしょうか?
index.json.rabl
@feedName ||= 'default'
node(:rss) { partial('articles/rss), :object => @feedName }
node(:headlines) { partial('articles/show'), :object => @articles }
show.json.rabl
object @article
attributes :id,:body
....
exports.rake
task :breakingnews => :config do
filename = 'breakingnews.json'
jsonFile = File.new(filename)
@articles = Article.limit(10)
n = Rabl::renderer.json(@articles,'articles/index',view_paths => 'app/views')
jsonFile.puts b
jsonFile.close