jam-cloud/ruby/lib/jam_ruby/models/crash_dump.rb

58 lines
1.6 KiB
Ruby

module JamRuby
class CrashDump < ActiveRecord::Base
include JamRuby::S3AnalyticsManagerMixin
self.table_name = "crash_dumps"
self.primary_key = 'id'
belongs_to :user, :inverse_of => :crash_dumps, :class_name => "JamRuby::User"
validates :client_type, :client_version, :description, presence: true
#validates :client_version, presence: true
attr_accessor :user_email
before_validation(:on => :create) do
self.created_at ||= Time.now
self.id = SecureRandom.uuid
#self.uri = "dumps/#{created_at.strftime('%Y-%m-%d')}/#{self.id}.zip"
type = description.gsub(/[^a-zA-Z0-9_.-]/, '')
self.uri = "stats/#{type}/#{created_at.strftime('%Y-%m-%d')}/#{self.id}.zip"
end
def user_email
nil if user_id.nil?
self.user.email
end
def sign_url(expiration_time = 3600 * 24 * 7, secure=true)
s3_manager.sign_url(self[:uri], {:expires => expiration_time, :secure => secure})
end
def read_url
expire = Time.now + 5.years
s3_bucket.objects[uri].url_for(:read,
:expires => expire,
:'response_content_type' => 'application/octet-stream').to_s
end
def write_url
s3_bucket.objects[uri].url_for(:write,
:expires => Rails.application.config.crash_dump_data_signed_url_timeout,
:'response_content_type' => 'application/octet-stream').to_s
end
private
def s3_bucket
s3 = AWS::S3.new(:access_key_id => Rails.application.config.aws_access_key_id,
:secret_access_key => Rails.application.config.aws_secret_access_key)
s3.buckets[Rails.application.config.aws_analytics_bucket]
end
end
end