Mercurial > zeropaste
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 |
rev | line source |
---|---|
2 | 1 class Paste < ActiveRecord::Base |
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 | 5 before_validation :set_paste_hash |
6 validates :paste, :paste_hash, :ip, :presence => true | |
7 validates :paste, :length => { :maximum => 1_000_000 } | |
8 | |
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 | 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 | 27 end |