diff --git a/ruby/lib/jam_ruby/db_util.rb b/ruby/lib/jam_ruby/db_util.rb index f3163cc9d..fac3145fb 100644 --- a/ruby/lib/jam_ruby/db_util.rb +++ b/ruby/lib/jam_ruby/db_util.rb @@ -14,13 +14,5 @@ module JamRuby end BAD_CONN_EXCEPTIONS.include?(test_exception.class) end - - def self.migrations_path - if ENV['RAILS_ENV'] == 'production' - "/var/lib/jam-web/vendor/bundle/ruby/2.3.0/gems/jam_ruby-0.1.#{ENV['BUILD_NUMBER']}/db/migrate" - else - File.expand_path("../../../../../db/migrate", __FILE__) - end - end end end \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/affiliate_partner.rb b/ruby/lib/jam_ruby/models/affiliate_partner.rb index 607550fd2..8c3a7f354 100644 --- a/ruby/lib/jam_ruby/models/affiliate_partner.rb +++ b/ruby/lib/jam_ruby/models/affiliate_partner.rb @@ -359,7 +359,7 @@ class JamRuby::AffiliatePartner < ActiveRecord::Base UPDATE affiliate_monthly_payments SET closed = TRUE, closed_at = NOW() - WHERE year < #{year} OR month < #{month} + WHERE year < #{year} AND month < #{month} } ActiveRecord::Base.connection.execute(sql) diff --git a/ruby/lib/jam_ruby/models/user.rb b/ruby/lib/jam_ruby/models/user.rb index ff2411310..615f32985 100644 --- a/ruby/lib/jam_ruby/models/user.rb +++ b/ruby/lib/jam_ruby/models/user.rb @@ -426,7 +426,7 @@ module JamRuby def self.subscription_transaction_sync recurly_client = RecurlyClient.new last_sync_at = GenericState.recurly_transactions_last_sync_at - recurly_client.sync_transactions({ begin_time: last_sync_at.iso8601 }) + recurly_client.sync_transactions({ begin_time: last_sync_at.nil? ? nil : last_sync_at.iso8601 }) end def self.first_lesson_instructions diff --git a/ruby/lib/jam_ruby/recurly_client.rb b/ruby/lib/jam_ruby/recurly_client.rb index cf75d5bb6..960321d4b 100644 --- a/ruby/lib/jam_ruby/recurly_client.rb +++ b/ruby/lib/jam_ruby/recurly_client.rb @@ -641,7 +641,8 @@ module JamRuby def sync_transactions(options = {}) ActiveRecord::Base.transaction do - options.merge!({ sort: :updated_at, state: :successful }) + options.merge!({ sort: :updated_at, state: :successful, per_page: 200 }) + latest_seen = nil Recurly::Transaction.find_each(options) do |transaction | if AffiliateDistribution.find_by_external_id(transaction.uuid) begin @@ -670,12 +671,19 @@ module JamRuby fee_in_cents = transaction.amount_in_cents * affiliate_partner.rate affiliate_distribution.affiliate_referral_fee_in_cents = fee_in_cents affiliate_distribution.created_at = transaction.created_at.to_time + if latest_seen.nil? || latest_seen < transaction.created_at.to_time + latest_seen = transaction.created_at.to_time + end affiliate_distribution.product_code = subscription.plan.plan_code affiliate_distribution.external_id = transaction.uuid #external_id is a unique column. should raises error if duplicates affiliate_distribution.save! end end - GenericState.singleton.update_attribute(:recurly_transactions_last_sync_at, Time.now) + + # only grab the latest time as seen in the data; that way, we should never skip really recent entries if + if !latest_seen.nil? + GenericState.singleton.update_attribute(:recurly_transactions_last_sync_at, latest_seen) + end end end diff --git a/ruby/lib/jam_ruby/resque/scheduled/hourly_job.rb b/ruby/lib/jam_ruby/resque/scheduled/hourly_job.rb index 94a42af21..e534e98cf 100644 --- a/ruby/lib/jam_ruby/resque/scheduled/hourly_job.rb +++ b/ruby/lib/jam_ruby/resque/scheduled/hourly_job.rb @@ -12,6 +12,7 @@ module JamRuby #LessonSession.hourly_check #TeacherPayment.hourly_check User.hourly_check + AffiliatePartner.tally_up(Date.today) ConnectionManager.new.cleanup_dangling @@log.info("done") diff --git a/ruby/lib/jam_ruby/resque/scheduled/tally_affiliates.rb b/ruby/lib/jam_ruby/resque/scheduled/tally_affiliates.rb index 2327f281f..ef946ebb7 100644 --- a/ruby/lib/jam_ruby/resque/scheduled/tally_affiliates.rb +++ b/ruby/lib/jam_ruby/resque/scheduled/tally_affiliates.rb @@ -22,7 +22,7 @@ module JamRuby def self.perform @@log.debug("waking up") - AffiliatePartner.tally_up(Date.today) + #AffiliatePartner.tally_up(Date.today) @@log.debug("done") end diff --git a/ruby/lib/jam_ruby/tasks/db/migrate.rake b/ruby/lib/jam_ruby/tasks/db/migrate.rake index 64a179401..ee1015ba9 100644 --- a/ruby/lib/jam_ruby/tasks/db/migrate.rake +++ b/ruby/lib/jam_ruby/tasks/db/migrate.rake @@ -1,5 +1,6 @@ require "active_record" -require 'yaml' +require "yaml" +require "jam_ruby/rake_util" namespace :db do namespace :jam_ruby do @@ -22,7 +23,7 @@ namespace :db do end ActiveRecord::Base.establish_connection(db_config) - migrate_dir = JamRuby::DbUtil.migrations_path + migrate_dir = JamRuby::RakeUtil.migrations_path ActiveRecord::Migrator.migrate(migrate_dir, version) puts "#{ENV['RAILS_ENV']} database migrated." end @@ -31,7 +32,7 @@ namespace :db do task :rollback do steps = (ARGV[1] || "1").to_i ActiveRecord::Base.establish_connection(db_config) - migrate_dir = JamRuby::DbUtil.migrations_path + migrate_dir = JamRuby::RakeUtil.migrations_path ActiveRecord::Migrator.rollback(migrate_dir, steps) puts "#{ENV['RAILS_ENV']} database migrated." end