annotate app/models/paste.rb @ 83:ae360c3b0bb0

Disable explain when using jruby because it's not supported. The patch for this support exist but for some reason still not included in latest release of the jdbc adapter. Reference: https://github.com/jruby/activerecord-jdbc-adapter/pull/206
author Edho Arief <edho@myconan.net>
date Mon, 15 Oct 2012 03:45:18 -0700
parents 7bb46d9febad
children a9dba6a3008b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
42de15334db1 Added the pastes.
Edho Arief <edho@myconan.net>
parents:
diff changeset
1 class Paste < ActiveRecord::Base
42de15334db1 Added the pastes.
Edho Arief <edho@myconan.net>
parents:
diff changeset
2 attr_accessible :paste
70
8f0fb869e770 Limit pastes to 100/hour per IP address.
Edho Arief <edho@myconan.net>
parents: 51
diff changeset
3 before_validation :paste_limit
22
032686a0c995 Added newline converter, integrity fixups.
Edho Arief <edho@myconan.net>
parents: 2
diff changeset
4 before_validation :convert_newlines
2
42de15334db1 Added the pastes.
Edho Arief <edho@myconan.net>
parents:
diff changeset
5 before_validation :set_paste_hash
42de15334db1 Added the pastes.
Edho Arief <edho@myconan.net>
parents:
diff changeset
6 validates :paste, :paste_hash, :ip, :presence => true
42de15334db1 Added the pastes.
Edho Arief <edho@myconan.net>
parents:
diff changeset
7 validates :paste, :length => { :maximum => 1_000_000 }
42de15334db1 Added the pastes.
Edho Arief <edho@myconan.net>
parents:
diff changeset
8
42de15334db1 Added the pastes.
Edho Arief <edho@myconan.net>
parents:
diff changeset
9 def set_paste_hash
51
36d07f047ec2 Or maybe not. Still too long with b62. Backed out changeset ba29d6394863
Edho Arief <edho@myconan.net>
parents: 46
diff changeset
10 self.paste_hash = Digest::SHA512.hexdigest("#{paste}\n")
2
42de15334db1 Added the pastes.
Edho Arief <edho@myconan.net>
parents:
diff changeset
11 end
22
032686a0c995 Added newline converter, integrity fixups.
Edho Arief <edho@myconan.net>
parents: 2
diff changeset
12
032686a0c995 Added newline converter, integrity fixups.
Edho Arief <edho@myconan.net>
parents: 2
diff changeset
13 def convert_newlines
71
7bb46d9febad Ensure we're gsubbing a string.
Edho Arief <edho@myconan.net>
parents: 70
diff changeset
14 self.paste = self.paste.to_s.gsub("\r\n", "\n").gsub("\r", "\n")
22
032686a0c995 Added newline converter, integrity fixups.
Edho Arief <edho@myconan.net>
parents: 2
diff changeset
15 end
032686a0c995 Added newline converter, integrity fixups.
Edho Arief <edho@myconan.net>
parents: 2
diff changeset
16
70
8f0fb869e770 Limit pastes to 100/hour per IP address.
Edho Arief <edho@myconan.net>
parents: 51
diff changeset
17 def paste_limit
8f0fb869e770 Limit pastes to 100/hour per IP address.
Edho Arief <edho@myconan.net>
parents: 51
diff changeset
18 ip_post_recent_count = self.class.where(:ip => self.ip).where('created_at > ?', Time.now - 1.hour).count
8f0fb869e770 Limit pastes to 100/hour per IP address.
Edho Arief <edho@myconan.net>
parents: 51
diff changeset
19 errors.add :base, :limit if ip_post_recent_count > 100
8f0fb869e770 Limit pastes to 100/hour per IP address.
Edho Arief <edho@myconan.net>
parents: 51
diff changeset
20 end
8f0fb869e770 Limit pastes to 100/hour per IP address.
Edho Arief <edho@myconan.net>
parents: 51
diff changeset
21
22
032686a0c995 Added newline converter, integrity fixups.
Edho Arief <edho@myconan.net>
parents: 2
diff changeset
22 def self.fix_all
032686a0c995 Added newline converter, integrity fixups.
Edho Arief <edho@myconan.net>
parents: 2
diff changeset
23 self.all.each do |p|
032686a0c995 Added newline converter, integrity fixups.
Edho Arief <edho@myconan.net>
parents: 2
diff changeset
24 p.save
032686a0c995 Added newline converter, integrity fixups.
Edho Arief <edho@myconan.net>
parents: 2
diff changeset
25 end
032686a0c995 Added newline converter, integrity fixups.
Edho Arief <edho@myconan.net>
parents: 2
diff changeset
26 end
2
42de15334db1 Added the pastes.
Edho Arief <edho@myconan.net>
parents:
diff changeset
27 end