0

Heroku にアップロードしたときに、ローカルホストと同じアプリの違いに混乱しています。

コントローラー メソッドを介してオンザフライで JSON をレンダリングし、AJAX 要求を使用して Javascript で取得します。

ローカルホストでは、完全に機能しています。しかし、Herokuにアップロードすると全く動きません。なぜそうなるのかはわかりません。Heroku がモデルにアクセスする方法とローカルホストがアクセスする方法の違いと関係がありますか?

同じタイムスタンプからの 2 つのデバッグ出力を次に示します。

働く:

以前は 106.944877 でしたが、現在は 0 で、増分は -84.07055608611111 です。

動作していません:

以前は 0 でしたが、現在は 0 刻みで 0 です

コードは次のとおりです。

コントローラーの方法 #1:

# present data to grab for view work
# get/user_data
def user_inst_data
timestamp = params[:time_now]
user_id = params[:user_id]

before = fetch_data_at_time(user_id, timestamp)
after = fetch_data_at_time(user_id, (timestamp.to_i+3600))

response = Hash.new

response['before'] = before
response['after'] = after

render json: response.to_json
end

コントローラーの方法 #2:

def fetch_data_at_time(user_id, time_at)
  # convert time to object
  timestamp = Time.at(time_at.to_i)
  # break down timestamp right now
  year = timestamp.year
  month = timestamp.month
  day = timestamp.day
  hour = timestamp.hour+1 #we're 1-indexed

  # find data
  response = UserData.where(:user_id=>user_id, :year=>year, :month=>month, :day=>day, :hour=>hour).select('power')

  return response
end

ジャバスクリプト:

function real_time_update(){
  //this function will fake "real-time" updates by grabbing simulated data from the DB
  //continue to update component every 5 seconds
  setTimeout(real_time_update,5000);
  var time = Math.round(((new Date()).getTime())/1000);

  var targetURL = "get/user_data?time_now="+time+"&user_id="+<%= @user.id %>;

  var power_before = 0;
  var power_after = 0;

  // GET data with AJAX request, set function for successful return
  $.get(targetURL, function(data){
    power_before = data.before[0].power;
    power_after = data.after[0].power;

    // after getting data before and after, find increment between them, delta-naught
    var delta = power_after - power_before;

    // scale before power by a percentage based on how much time has elapsed since last hour
    var current_time = new Date();
    var minutes_passed = (current_time.getMinutes())*60;
    var seconds_passed = minutes_passed + (current_time.getSeconds());
    var percent_hour = seconds_passed/3600;

    // calculate increment
    var delta_change = delta*percent_hour;

    // DEBUG----
    console.log("Before it was "+power_before+", now it is "+power_after+" with increments of "+delta_change)

    //add to power_before and update html component
    var power_update = power_before + delta_change;

    // redraw component
    drawChart(power_update);
  })
}
4

0 に答える 0