※追記 もっといい方法がありました。詳細は→2014-07-16 - 日々精進
CasperJSが今どの環境で実行されているかは2014-07-03 - 日々精進に書いた方法で、環境変数から取得する。
スクレイピングしたデータをHTTPで送信している場合、そのリクエストはCasperJS内のヘッドレスブラウザ内から送信されるのでそこにCasperJS本体から文字列を渡すのがちょっと難しい。
以下のように、CasperJS本体がJSファイルを書き出し、それをclientScripts経由でヘッドレスブラウザに読み込ませることで解決した。
fs = require 'fs' system = require('system') port = if system.env.ENVIRONMENT == "production" then "3000" else "3001" portTmpFile = "./port.tmp.js" if fs.exists(portTmpFile) then fs.remove(portTmpFile) fs.write(portTmpFile, "var port = \"#{port}\";", 'w') instance = require('casper').create clientScripts: [ "./port.tmp.js" ] instance.start "..." instance.wait 1000, -> this.evaluate -> scrapeOhlc = -> ... $.ajax "url": "http://localhost:#{port}", "type": "PUT", "contentType": "application/json", "data": body, "dataType": "json" instance.run()
もっと楽な方法ありそうだな。。