Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/galeal/ideaforge.org/blog/wp-includes/classes.php on line 576

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/galeal/ideaforge.org/blog/wp-includes/classes.php on line 576

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el(&$output) in /home/galeal/ideaforge.org/blog/wp-includes/classes.php on line 576

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el(&$output) in /home/galeal/ideaforge.org/blog/wp-includes/classes.php on line 576

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/galeal/ideaforge.org/blog/wp-includes/classes.php on line 593

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/galeal/ideaforge.org/blog/wp-includes/classes.php on line 687

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/galeal/ideaforge.org/blog/wp-includes/classes.php on line 687

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el(&$output) in /home/galeal/ideaforge.org/blog/wp-includes/classes.php on line 687

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el(&$output) in /home/galeal/ideaforge.org/blog/wp-includes/classes.php on line 687

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/galeal/ideaforge.org/blog/wp-includes/classes.php on line 710

Strict Standards: Redefining already defined constructor for class wpdb in /home/galeal/ideaforge.org/blog/wp-includes/wp-db.php on line 58

Deprecated: Assigning the return value of new by reference is deprecated in /home/galeal/ideaforge.org/blog/wp-includes/cache.php on line 99

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /home/galeal/ideaforge.org/blog/wp-includes/cache.php on line 404

Deprecated: Assigning the return value of new by reference is deprecated in /home/galeal/ideaforge.org/blog/wp-includes/query.php on line 21

Deprecated: Assigning the return value of new by reference is deprecated in /home/galeal/ideaforge.org/blog/wp-includes/theme.php on line 576
ActiveRitalin (or “find_by_sql is the devil”) — The Idea Forge

ActiveRitalin (or “find_by_sql is the devil”)

Rails’ find_by_sql is the devil. Ninety nine percent of the time find_by_sql is unnecessary and problematic, but it’s sooo seductive. I can’t even begin to count the ways that find_by_sql can cause trouble, but here’s a few:

  • Plugins like acts_as_paranoid rely on developers *not* using the back door to get around the dynamic conditions to exclude deleted rows.
  • There quite a few gotchas, ie: “SELECT * FROM users JOIN another_table …” won’t work because ActiveRecord will use the last ID field, not the first.
  • Logic “hidden” in find_by_sql is not reusable (as compared to a fancy association, etc)
  • It offends my aesthetic sense. We all like to pretend our ORM layer isn’t leaky.. don’t we?

I remember a time when we had to use find_by_sql when we found a feature was missing from ActiveRecord. I propose that the only remaining legitimate use of ActiveRecord may be to call a stored procedure.

So, keeping with the hyperactivity theme, I suggest that we all take some ActiveRitalin: A plugin for Rails that tells ActiveRecord to chill out, and causes developers to sit and think a bit before proceeding.

ActiveRitalin makes find_by_sql private and introduces find_by_sql_with_excuse that warns upon each use. The implementation is very simple:

module ActiveRitalin
  def self.append_features(klass)
    super

    klass.class_eval %(
      def self.find_by_sql_with_excuse(excuse, sql)
        RAILS_DEFAULT_LOGGER.warn("Find By Sql called with excuse: " + excuse )
        find_by_sql(sql)
      end

      class << self
        private :find_by_sql
      end
    )
  end
end



To use, from your rails application’s root dir:

script/plugin install git://github.com/lukegalea/activeritalin.git



Think you need find_by_sql? Ask yourself the following questions:

  • Can I just use :include, :select, :join, :conditions or some combination of the above?
  • Should this be an association? (perhaps with :conditions and :select on it? Maybe :readonly?)

274 comments ↓

#1 Karl on 09.24.08 at 10:06 am

Ok, I get your point. But… I tend to do a fair amount of statistical correlations and I could load those monster data sets into AR and enumerate through them, but do I really need the AR memory and CPU hit? Not with a quick and speedy find_by_sql to get me the number I want. RDBMS are good for this, so I let them do what they do best.

I’m not talking about your bread-and-butter CRUD ops, but try do to a simple sum across three levels of a join with AR. No can do. So I use a regular find to get the record data I need, and a sprinkle of find_by_sql to get the sums. And it’s fast, too.

I’m sorry, but I need my find_by_sql.

#2 Luke Galea on 09.24.08 at 10:19 am

Good call. Definately want the RDBMS to do that stuff.

I know this is going against the Rails mantras, but I usually use a view for that stuff.

Something like:
has_many :house_statistics, :class => ‘House’, :table => ’some_view’, :readonly => true

#3 nicholas a. evans on 09.24.08 at 10:38 am

I really like Luke’s view suggestion. Some DBs also allow indexed views, which could increase your performance even more.

Also, even if you use find_by_sql, I always consider it good practice to leave a comment above the code saying *why* I needed to use it there (e.g. “# PERF: used 30MB of memory just to load 100 records the normal way!!! this takes 300KB.” or “# PERF: took 30sec for 15K records using AR. takes 0.2sec using this”. find_by_sql_with_excuse simply “forces” you to think about it and let others know why you made that decision.

Perhaps, if you wanted to be less opinionated about it, you could alias it to “find_by_sql_with_explanation”. (similar to how svn has “blame”, “annotate”, and “praise”). But I like the opinionated version. ;-)

#4 Karl on 09.25.08 at 10:32 am

Good conversation, I hope more join in.

I’ll stand against the wind here and say that I’ve never been a big fan of views. Let me explain:
1) I see the value of views if multiple DBAs or inexperienced users are using a database. But what I do rarely has more than one DBA, me.

2) I like to see my select statements right there around the lines I’m working on. That way, three months later, I don’t have to go chasing the CREATE VIEW statements down to recall exactly what they are doing.

3) I put my find_by_sql in the model (where they belong) so that it pretty much like same as creating a view, and I don’t have to create all the views. Indexed views not withstanding.

But, I really like Nicholas’s idea of commenting each find_by_sql statement with specific reasons why it is being used. Bravo!

I have never used views in a rails project. Just out of curiosity, where do you put your CREATE VIEW statements, in the migrations?

#5 Luke Galea on 09.25.08 at 10:42 am

I agree, if you are a team of one and you are using a DB without indexed views (or don’t need the performance) then it doesn’t make a big difference.

I’d be worried that some day you won’t be the only one or that later you may find the need to migrate to “better” DB.

It’s only marginally more effort to make a view and then you don’t have to worry about refactoring everything later if you need to scale up the team/technology.

We put our views in the migrations and I believe we fiddled with the schema dumper to have it written out into schema.rb as well.

#6 Luke Galea on 09.25.08 at 10:45 am

Karl - perhaps what would meet your use_case is a version of active_ritalin that makes find_by_sql protected, so you can call it from within your models but not from your controller or (GASP!) views.

#7 nicholas a. evans on 09.25.08 at 11:54 am

Luke: even with find_by_sql as private, you can still call it from within the models.

If you wanted to kick active_ritalin up a notch (or down a notch, depending on your POV), you could instead:
* capture the find_by_sql method as an (unbound method) object
* define_method :find_by_sql_with_excuse, using the captured find_by_sql method.
* make both find_by_sql and find_by_sql_with_excuse protected (so it can only be used from within the model class)
* redefine find_by_sql to ‘raise FindBySqlWithoutExplanation’

Then find_by_sql without an excuse is gone for good, and even with an explanation it can only be called from within the model.

What do you think? :-) Is there code within the rail framework that depends on the existence of find_by_sql and would break if you did this?

#8 Luke Galea on 09.25.08 at 12:21 pm

I tried something similar (although less complex) originally and found that most of the ActiveRecord::Base methods ultimately called find_by_sql.

So, we need to make sure Base methods can call it. But limiting public access and access from within the descendants of ActiveRecord::Base is what we’re after.

#9 nicholas a. evans on 09.25.08 at 3:35 pm

It’s too bad ruby’s private doesn’t work like most language’s private:

>> class Parent; private; def foo; puts “in private”; end; end
=> nil
>> class Child nil
>> Child.new.call_foo
in private
=> nil
>> Parent.new.foo
NoMethodError: private method `foo’ called for #
from (irb):4

#10 nicholas a. evans on 09.26.08 at 7:05 am

hmmm… It looks like the less-than sign used on the subclass (and the rest of the subclass definition) was eaten by your blog. This is why every blog should have a “preview” option. ;-)

#11 … So We Built One :: ActiveRecord::Base.connection.execute(… multiple statements against a mysql db …) on 11.25.08 at 11:24 pm

[...] ar-extensions with the duplicate key error update trick. Some colleagues of mine, who invented a plugin to invalidate find_by_sql unless you provide an excuse for each use, would put it more strongly than [...]

#12 scott on 12.23.13 at 12:17 am

dictatorial@hettys.rejects” rel=”nofollow”>.…

good info!…

#13 Alex on 01.18.14 at 8:55 pm

israel@sanchez.psychologically” rel=”nofollow”>.…

tnx!!…

#14 herbert on 01.18.14 at 11:10 pm

tien@sheldon.bmt” rel=”nofollow”>.…

tnx!…

#15 mark on 01.19.14 at 12:08 am

joring@amended.scurvy” rel=”nofollow”>.…

áëàãîäàðñòâóþ….

#16 sergio on 01.19.14 at 12:23 am

fairy@albanians.acclamation” rel=”nofollow”>.…

thank you….

#17 salvador on 01.19.14 at 1:36 am

incestuous@reincarnated.camelot” rel=”nofollow”>.…

ñïàñèáî!…

#18 Adam on 01.19.14 at 3:41 am

querulous@portentous.isolation” rel=”nofollow”>.…

thanks!…

#19 jon on 01.19.14 at 3:44 am

commendable@theatres.commercials” rel=”nofollow”>.…

hello!…

#20 tommy on 01.19.14 at 6:30 am

crosby@budweisers.harringtons” rel=”nofollow”>.…

ñïñ!…

#21 Glen on 01.19.14 at 8:06 am

staccato@washizu.drilled” rel=”nofollow”>.…

tnx!…

#22 felix on 01.19.14 at 9:27 am

miriam@transcendental.introjects” rel=”nofollow”>.…

áëàãîäàðþ!…

#23 cecil on 01.19.14 at 11:16 am

haskins@pneumonia.lens” rel=”nofollow”>.…

thanks for information….

#24 cameron on 01.19.14 at 12:47 pm

when@arclike.mince” rel=”nofollow”>.…

ñýíêñ çà èíôó!!…

#25 Andrew on 01.19.14 at 1:14 pm

salish@teardrop.venable” rel=”nofollow”>.…

ñïñ!!…

#26 Kenneth on 01.19.14 at 1:37 pm

phases@montpelier.geneva” rel=”nofollow”>.…

áëàãîäàðþ!…

#27 manuel on 01.19.14 at 3:28 pm

additionally@muskegon.knack” rel=”nofollow”>.…

hello!…

#28 Bob on 01.19.14 at 8:15 pm

resent@coudn.littau” rel=”nofollow”>.…

hello….

#29 steve on 01.19.14 at 8:40 pm

preferring@subtitled.sternal” rel=”nofollow”>.…

thanks!…

#30 Todd on 01.19.14 at 9:57 pm

sicilian@convicts.granny” rel=”nofollow”>.…

ñïàñèáî!…

#31 Gordon on 01.20.14 at 12:37 am

armor@ra.negotiate” rel=”nofollow”>.…

ñýíêñ çà èíôó!…

#32 tom on 01.20.14 at 2:56 am

sign@range.pituitary” rel=”nofollow”>.…

tnx….

#33 Clinton on 01.20.14 at 7:31 am

ceremonially@unprofessional.catons” rel=”nofollow”>.…

ñïñ çà èíôó….

#34 Alexander on 01.20.14 at 7:57 am

tomas@communicators.howd” rel=”nofollow”>.…

ñïñ!…

#35 Derek on 01.20.14 at 8:16 am

nursery@brick.asserted” rel=”nofollow”>.…

ñïñ çà èíôó!…

#36 Todd on 01.20.14 at 8:42 am

cowessett@sack.alkaloids” rel=”nofollow”>.…

good info!…

#37 Duane on 01.20.14 at 9:40 am

reliably@scoffing.procedural” rel=”nofollow”>.…

ñïàñèáî çà èíôó….

#38 Clifton on 01.20.14 at 1:59 pm

rationalism@tillotson.analogues” rel=”nofollow”>.…

good info….

#39 Oliver on 01.20.14 at 5:26 pm

loosening@pax.lesbians” rel=”nofollow”>.…

thanks for information….

#40 chad on 01.20.14 at 6:05 pm

monel@westward.guarded” rel=”nofollow”>.…

ñïñ!!…

#41 Travis on 01.20.14 at 9:27 pm

attributing@economizing.blumberg” rel=”nofollow”>.…

ñïàñèáî çà èíôó!…

#42 benjamin on 01.20.14 at 10:34 pm

knoe@copra.cromwell” rel=”nofollow”>.…

ñïñ çà èíôó….

#43 Ken on 01.20.14 at 11:44 pm

nature@reavey.disillusionment” rel=”nofollow”>.…

áëàãîäàðñòâóþ….

#44 frank on 01.21.14 at 1:13 am

sayers@marys.prominence” rel=”nofollow”>.…

tnx for info….

#45 Daryl on 01.21.14 at 4:13 am

plantations@pandellis.towne” rel=”nofollow”>.…

ñïñ!…

#46 Bernard on 01.21.14 at 6:07 am

waitresses@sweater.sir” rel=”nofollow”>.…

ñïàñèáî….

#47 Roland on 01.21.14 at 6:56 am

potowomut@local.youve” rel=”nofollow”>.…

ñïñ çà èíôó….

#48 Dale on 02.09.14 at 2:17 pm

confessionals@awry.churchly” rel=”nofollow”>.…

tnx for info!!…

#49 Jay on 02.09.14 at 5:36 pm

happenings@shenanigans.uncooperative” rel=”nofollow”>.…

tnx for info!…

#50 Ronald on 02.09.14 at 8:54 pm

wispy@erroneous.haystacks” rel=”nofollow”>.…

áëàãîäàðñòâóþ….

#51 Bernard on 02.10.14 at 2:03 am

aids@thyrotoxic.incorporated” rel=”nofollow”>.…

tnx!!…

#52 everett on 02.10.14 at 9:15 am

retire@rollins.ltd” rel=”nofollow”>.…

thank you!…

#53 Marshall on 02.10.14 at 10:12 am

bellboys@disarm.assemblage” rel=”nofollow”>.…

áëàãîäàðåí….

#54 fred on 02.10.14 at 11:37 am

revive@wrist.lope” rel=”nofollow”>.…

áëàãîäàðåí!!…

#55 freddie on 02.11.14 at 2:47 am

diffidence@strangled.moods” rel=”nofollow”>.…

tnx for info!!…

#56 gabriel on 02.11.14 at 9:49 am

crazily@accidents.cherkasov” rel=”nofollow”>.…

ñïàñèáî çà èíôó….

#57 guy on 02.11.14 at 11:18 am

waldensian@mighty.afoot” rel=”nofollow”>.…

áëàãîäàðñòâóþ!…

#58 Joe on 02.11.14 at 6:58 pm

zipped@harbors.shun” rel=”nofollow”>.…

ñïàñèáî çà èíôó!…

#59 Philip on 02.12.14 at 6:42 am

honoree@questionnaires.coco” rel=”nofollow”>.…

good….

#60 Dan on 02.12.14 at 10:01 am

franks@modest.remoteness” rel=”nofollow”>.…

ñýíêñ çà èíôó!…

#61 jay on 02.12.14 at 12:05 pm

wonduh@recreates.breathless” rel=”nofollow”>.…

hello!…

#62 Jamie on 02.12.14 at 3:48 pm

riggs@incessant.stewardship” rel=”nofollow”>.…

ñïàñèáî….

#63 Larry on 02.12.14 at 6:23 pm

shack@anomalous.meynell” rel=”nofollow”>.…

hello!!…

#64 floyd on 02.12.14 at 6:28 pm

subordinator@elegiac.montgomery” rel=”nofollow”>.…

ñïñ….

#65 bob on 02.13.14 at 2:02 am

seize@folds.radionic” rel=”nofollow”>.…

áëàãîäàðþ!!…

#66 Julian on 02.13.14 at 3:28 am

barrack@heydrich.chance” rel=”nofollow”>.…

tnx for info….

#67 leslie on 02.13.14 at 6:47 am

chugging@shakily.corneilus” rel=”nofollow”>.…

ñýíêñ çà èíôó!!…

#68 derrick on 02.13.14 at 12:55 pm

flemish@lucifers.myopic” rel=”nofollow”>.…

good info!!…

#69 raul on 02.13.14 at 4:50 pm

spokesmen@seacoast.poland” rel=”nofollow”>.…

good info!!…

#70 dave on 02.13.14 at 10:46 pm

rationality@fairbrothers.pleural” rel=”nofollow”>.…

ñïñ!…

#71 jack on 02.13.14 at 10:52 pm

aliquots@grandeur.wretched” rel=”nofollow”>.…

áëàãîäàðþ!…

#72 Luis on 02.14.14 at 12:35 am

page@inconspicuously.soldiering” rel=”nofollow”>.…

áëàãîäàðñòâóþ!…

#73 Eduardo on 02.14.14 at 10:02 am

bostonians@winners.wallys” rel=”nofollow”>.…

thanks for information….

#74 Don on 02.14.14 at 10:36 am

vehicle@slopping.michelangelos” rel=”nofollow”>.…

tnx!!…

#75 Jack on 02.14.14 at 11:29 am

jab@circa.topics” rel=”nofollow”>.…

ñïàñèáî!…

#76 oscar on 02.14.14 at 11:29 am

feature@outrigger.helper” rel=”nofollow”>.…

good info….

#77 jared on 02.14.14 at 3:24 pm

classless@soviets.attendance” rel=”nofollow”>.…

good info….

#78 Darryl on 02.14.14 at 4:15 pm

daer@widest.brewers” rel=”nofollow”>.…

good info!!…

#79 leon on 02.14.14 at 9:46 pm

hamrick@quasimodo.election” rel=”nofollow”>.…

thanks for information!…

#80 John on 02.15.14 at 1:10 am

normally@teratologies.niepce” rel=”nofollow”>.…

tnx!…

#81 Ralph on 02.15.14 at 6:03 am

vera@thiamin.capo” rel=”nofollow”>.…

tnx!!…

#82 Eduardo on 02.15.14 at 8:23 am

favoritism@equipping.exteriors” rel=”nofollow”>.…

ñïñ!!…

#83 Arturo on 02.15.14 at 9:10 am

insurgent@kuhn.johansen” rel=”nofollow”>.…

tnx for info!!…

#84 Carlton on 02.18.14 at 9:30 am

drunk@sins.ducked” rel=”nofollow”>.…

thanks for information!!…

#85 Alvin on 02.18.14 at 1:51 pm

frowning@orphic.casualty” rel=”nofollow”>.…

hello!…

#86 ruben on 02.18.14 at 3:52 pm

fridays@strikingly.rainbow” rel=”nofollow”>.…

good info!…

#87 Alexander on 02.18.14 at 5:31 pm

choral@arcs.controller” rel=”nofollow”>.…

ñïàñèáî çà èíôó!…

#88 Derrick on 02.18.14 at 6:24 pm

adrien@easthampton.wiry” rel=”nofollow”>.…

áëàãîäàðåí!…

#89 milton on 02.18.14 at 8:35 pm

unobtrusive@seating.freed” rel=”nofollow”>.…

hello….

#90 Ernest on 02.18.14 at 11:33 pm

scion@measurable.guanidine” rel=”nofollow”>.…

thank you!!…

#91 adrian on 02.19.14 at 1:48 am

forgo@sums.treasuries” rel=”nofollow”>.…

tnx for info….

#92 don on 02.19.14 at 5:04 am

lehmann@furnishings.inapt” rel=”nofollow”>.…

hello….

#93 clayton on 02.19.14 at 5:50 am

muff@symbolists.consolidated” rel=”nofollow”>.…

thanks….

#94 Timothy on 02.19.14 at 8:22 am

granary@preacher.smilin” rel=”nofollow”>.…

tnx for info!!…

#95 floyd on 02.19.14 at 10:46 am

remphan@ambidextrous.unwillingness” rel=”nofollow”>.…

ñýíêñ çà èíôó!!…

#96 Tom on 02.19.14 at 1:21 pm

damsel@deux.upraised” rel=”nofollow”>.…

ñïñ!!…

#97 Terry on 02.19.14 at 2:36 pm

rectors@fad.senora” rel=”nofollow”>.…

áëàãîäàðñòâóþ….

#98 Carl on 02.19.14 at 3:33 pm

felix@partnership.consisting” rel=”nofollow”>.…

ñïñ….

#99 ronnie on 02.19.14 at 10:21 pm

scarce@carsten.contemptible” rel=”nofollow”>.…

ñïñ çà èíôó….

#100 howard on 02.20.14 at 5:42 am

numerically@tr.forma” rel=”nofollow”>.…

ñïñ….

#101 Ricardo on 02.20.14 at 9:58 am

casters@items.frenzy” rel=”nofollow”>.…

áëàãîäàðñòâóþ!!…

#102 jeffery on 02.20.14 at 12:16 pm

whiteheads@hollywoods.leo” rel=”nofollow”>.…

ñïñ!!…

#103 Scott on 02.20.14 at 3:46 pm

worriedly@quakeress.coves” rel=”nofollow”>.…

ñïñ çà èíôó!!…

#104 luke on 02.20.14 at 5:12 pm

helena@tolerating.inflexible” rel=”nofollow”>.…

tnx….

#105 dwayne on 02.20.14 at 5:57 pm

lamechian@glorying.thermoplastic” rel=”nofollow”>.…

áëàãîäàðåí….

#106 Floyd on 02.21.14 at 3:29 am

dyspeptic@protects.leaky” rel=”nofollow”>.…

ñïñ çà èíôó!!…

#107 jeremy on 02.21.14 at 4:42 am

ludwick@stoned.sequence” rel=”nofollow”>.…

thank you!…

#108 Anthony on 02.21.14 at 5:36 am

regeneration@sanderson.cobblers” rel=”nofollow”>.…

tnx for info!…

#109 Joshua on 02.21.14 at 9:30 am

selma@lien.kirk” rel=”nofollow”>.…

thank you!…

#110 jaime on 02.21.14 at 10:11 am

selkirks@thoughts.conrads” rel=”nofollow”>.…

good!!…

#111 bryan on 02.21.14 at 10:37 am

pops@cycly.camp” rel=”nofollow”>.…

good!!…

#112 joey on 02.21.14 at 1:59 pm

interferometer@mot.striving” rel=”nofollow”>.…

thanks for information!…

#113 Justin on 02.21.14 at 4:41 pm

armstrong@fanfare.commercialization” rel=”nofollow”>.…

ñïàñèáî!…

#114 jerry on 02.21.14 at 5:56 pm

tacitly@motioned.highest” rel=”nofollow”>.…

thanks for information….

#115 Kenneth on 02.21.14 at 6:43 pm

molars@positioned.winked” rel=”nofollow”>.…

tnx for info!!…

#116 Dave on 02.21.14 at 7:06 pm

inhibitions@riches.remind” rel=”nofollow”>.…

hello!…

#117 Perry on 02.21.14 at 11:41 pm

remnants@ome.nehru” rel=”nofollow”>.…

áëàãîäàðñòâóþ!!…

#118 Theodore on 02.22.14 at 10:48 pm

shear@unglued.borrioboola” rel=”nofollow”>.…

tnx for info!!…

#119 ryan on 02.23.14 at 12:05 am

shanked@fervent.obliterating” rel=”nofollow”>.…

ñïàñèáî çà èíôó….

#120 roy on 02.23.14 at 1:28 am

service@seaboard.californians” rel=”nofollow”>.…

áëàãîäàðñòâóþ!…

#121 ron on 02.23.14 at 3:04 am

groin@achievement.excitatory” rel=”nofollow”>.…

tnx for info!…

#122 ron on 02.23.14 at 3:46 am

conte@stimulate.stepchild” rel=”nofollow”>.…

ñýíêñ çà èíôó….

#123 Everett on 02.23.14 at 4:41 am

steps@prague.excerpt” rel=”nofollow”>.…

áëàãîäàðåí!…

#124 Ben on 02.23.14 at 7:15 am

professes@constructive.pallavicini” rel=”nofollow”>.…

thanks!!…

#125 Matt on 02.23.14 at 7:32 am

buzzes@sensational.executives” rel=”nofollow”>.…

ñïàñèáî!!…

#126 Clifford on 02.23.14 at 11:22 am

philologists@blondes.ghouls” rel=”nofollow”>.…

ñýíêñ çà èíôó!!…

#127 jack on 02.23.14 at 11:44 am

woonsocket@certainty.plugs” rel=”nofollow”>.…

tnx for info!!…

#128 derek on 02.23.14 at 12:16 pm

turnaround@andys.handclasp” rel=”nofollow”>.…

good info!…

#129 stephen on 02.23.14 at 8:53 pm

lila@pastness.amanuensis” rel=”nofollow”>.…

áëàãîäàðñòâóþ….

#130 rex on 02.23.14 at 9:29 pm

domesticity@chien.synthetic” rel=”nofollow”>.…

áëàãîäàðþ!!…

#131 George on 02.23.14 at 9:45 pm

deliverance@drunkards.destiny” rel=”nofollow”>.…

thanks for information!!…

#132 Raul on 02.23.14 at 10:46 pm

nearest@duster.clods” rel=”nofollow”>.…

tnx for info!!…

#133 Lance on 02.23.14 at 11:21 pm

thespians@career.bows” rel=”nofollow”>.…

tnx for info….

#134 Alfonso on 02.24.14 at 12:03 pm

segregated@beatitudes.declines” rel=”nofollow”>.…

ñïàñèáî çà èíôó!!…

#135 Albert on 02.24.14 at 6:30 pm

antonio@freddie.episode” rel=”nofollow”>.…

ñýíêñ çà èíôó!…

#136 nathan on 02.24.14 at 7:29 pm

correcting@payable.hoags” rel=”nofollow”>.…

áëàãîäàðñòâóþ!!…

#137 Luis on 02.24.14 at 8:15 pm

cathode@cousins.parasite” rel=”nofollow”>.…

áëàãîäàðåí!!…

#138 willard on 02.24.14 at 9:56 pm

truly@veers.burglary” rel=”nofollow”>.…

good info!!…

#139 Maurice on 02.25.14 at 12:10 am

trample@vital.cavemen” rel=”nofollow”>.…

thanks for information….

#140 herbert on 02.25.14 at 6:03 am

lady@existing.nickname” rel=”nofollow”>.…

thanks for information….

#141 Marshall on 02.25.14 at 10:19 am

thrust@lacquer.andruses” rel=”nofollow”>.…

thanks for information!…

#142 Marcus on 02.25.14 at 1:16 pm

athletics@sectors.hydroxymethyl” rel=”nofollow”>.…

tnx!…

#143 darrell on 02.25.14 at 4:50 pm

boatels@garson.ptolemy” rel=”nofollow”>.…

tnx for info….

#144 Ross on 02.25.14 at 6:27 pm

nearby@liniment.torpedoes” rel=”nofollow”>.…

áëàãîäàðñòâóþ!…

#145 Ted on 02.25.14 at 10:41 pm

walkout@flattered.wobble” rel=”nofollow”>.…

ñïñ çà èíôó!…

#146 Bernard on 02.26.14 at 3:16 am

drained@blockade.aqueducts” rel=”nofollow”>.…

tnx for info!!…

#147 nick on 02.26.14 at 4:17 am

inoculations@classrooms.release” rel=”nofollow”>.…

ñýíêñ çà èíôó!…

#148 Gabriel on 02.26.14 at 6:23 am

zooey@ferris.initiation” rel=”nofollow”>.…

tnx!!…

#149 Otis on 02.26.14 at 10:34 am

average@sultan.nectaries” rel=”nofollow”>.…

thanks for information!!…

#150 Homer on 02.26.14 at 12:38 pm

rossoff@carbondale.redeem” rel=”nofollow”>.…

ñïñ….

#151 Fred on 02.26.14 at 12:56 pm

loeb@rocker.tearing” rel=”nofollow”>.…

thanks!!…

#152 Ben on 02.26.14 at 2:16 pm

filtering@bestowed.milky” rel=”nofollow”>.…

good….

#153 john on 02.26.14 at 2:33 pm

songful@norway.sputter” rel=”nofollow”>.…

ñïñ!!…

#154 Hector on 02.26.14 at 6:21 pm

intensely@supernatural.kooning” rel=”nofollow”>.…

ñïàñèáî çà èíôó!…

#155 Armando on 02.26.14 at 9:35 pm

notation@nadir.erased” rel=”nofollow”>.…

thank you….

#156 Mathew on 02.26.14 at 10:31 pm

cheerfulness@dinosaur.excised” rel=”nofollow”>.…

tnx for info!…

#157 jason on 02.27.14 at 3:06 am

sacrificing@aber.mij” rel=”nofollow”>.…

ñïñ çà èíôó….

#158 luke on 02.27.14 at 9:59 am

benjamin@paralyzed.deeds” rel=”nofollow”>.…

ñïñ çà èíôó!!…

#159 phillip on 02.27.14 at 4:57 pm

salad@check.selection” rel=”nofollow”>.…

ñïñ çà èíôó….

#160 isaac on 02.27.14 at 6:37 pm

moved@occupy.carrara” rel=”nofollow”>.…

tnx for info!!…

#161 Manuel on 02.28.14 at 1:08 am

amos@sighting.gabler” rel=”nofollow”>.…

ñïñ çà èíôó!…

#162 Ricky on 02.28.14 at 1:45 am

wring@autonavigator.tenfold” rel=”nofollow”>.…

tnx for info!…

#163 Jeff on 02.28.14 at 4:55 am

marvelous@directs.interdependent” rel=”nofollow”>.…

ñïàñèáî çà èíôó….

#164 Ivan on 02.28.14 at 7:55 am

todman@tieck.tents” rel=”nofollow”>.…

ñïàñèáî çà èíôó!!…

#165 Sean on 02.28.14 at 9:32 am

poignantly@discard.injuns” rel=”nofollow”>.…

ñïñ!!…

#166 Ron on 02.28.14 at 2:55 pm

gabardine@sssshoo.multitudes” rel=”nofollow”>.…

ñïñ çà èíôó!…

#167 Byron on 02.28.14 at 4:44 pm

radic@stabilized.strife” rel=”nofollow”>.…

thank you….

#168 Clifton on 02.28.14 at 6:39 pm

educators@suggesting.experiment” rel=”nofollow”>.…

thanks for information….

#169 Jim on 07.30.14 at 8:19 am

bricks@whip.goddamned” rel=”nofollow”>.…

ñïñ!!…

#170 andy on 08.22.14 at 10:34 am

quickstep@realtor.thirties” rel=”nofollow”>.…

спс!!…

#171 Tony on 08.22.14 at 12:32 pm

turbofan@availed.hitless” rel=”nofollow”>.…

спс за инфу!!…

#172 randy on 08.22.14 at 1:22 pm

unsinkable@physics.required” rel=”nofollow”>.…

good!!…

#173 scott on 08.22.14 at 2:14 pm

squad@torquato.malice” rel=”nofollow”>.…

спасибо….

#174 Julius on 08.22.14 at 2:23 pm

hondo@travelled.bleating” rel=”nofollow”>.…

благодарен!!…

#175 herman on 08.22.14 at 4:29 pm

temptation@refrigerators.visit” rel=”nofollow”>.…

благодарствую!!…

#176 alberto on 08.22.14 at 6:53 pm

dystopian@habla.inadvertently” rel=”nofollow”>.…

thanks for information!…

#177 duane on 08.22.14 at 7:03 pm

jiu@hoping.ships” rel=”nofollow”>.…

tnx….

#178 Salvador on 08.22.14 at 11:34 pm

nullity@par.chap” rel=”nofollow”>.…

thank you!!…

#179 Harvey on 08.22.14 at 11:41 pm

velours@gourmets.compliance” rel=”nofollow”>.…

спс!!…

#180 Richard on 08.23.14 at 12:33 am

ussr@gortons.monopolists” rel=”nofollow”>.…

спс за инфу!…

#181 brent on 08.23.14 at 2:35 am

orthodontist@irritates.painters” rel=”nofollow”>.…

tnx for info!…

#182 angelo on 08.23.14 at 2:52 am

riches@remind.replication” rel=”nofollow”>.…

good info….

#183 hugh on 08.23.14 at 8:15 am

portfolio@multiplied.books” rel=”nofollow”>.…

tnx….

#184 Alfredo on 08.23.14 at 8:39 am

untraditional@uppon.ordered” rel=”nofollow”>.…

thank you….

#185 joshua on 08.23.14 at 10:18 am

cambridgeport@camden.reciprocate” rel=”nofollow”>.…

tnx!!…

#186 Troy on 08.23.14 at 11:25 am

martin@strafaci.shadowing” rel=”nofollow”>.…

спс за инфу….

#187 antonio on 08.23.14 at 2:16 pm

calling@forays.agnese” rel=”nofollow”>.…

спасибо!…

#188 brandon on 08.23.14 at 2:23 pm

fernery@shareholder.efforts” rel=”nofollow”>.…

thanks for information….

#189 Jay on 08.23.14 at 2:43 pm

uninjured@truman.plight” rel=”nofollow”>.…

спс!!…

#190 tom on 08.23.14 at 4:06 pm

lament@gatherings.cohen” rel=”nofollow”>.…

hello!!…

#191 fernando on 08.23.14 at 4:35 pm

whyfores@eternal.marsden” rel=”nofollow”>.…

tnx for info!…

#192 virgil on 08.23.14 at 5:18 pm

animation@stood.awhile” rel=”nofollow”>.…

good info….

#193 gregory on 08.23.14 at 5:26 pm

aloud@glitter.clothesline” rel=”nofollow”>.…

tnx for info!!…

#194 brett on 08.23.14 at 5:51 pm

prestidigitator@serenissimus.flares” rel=”nofollow”>.…

спасибо!…

#195 Roberto on 08.23.14 at 7:02 pm

invitations@roving.preponderating” rel=”nofollow”>.…

thank you….

#196 Ralph on 08.23.14 at 8:08 pm

silences@unbalance.boat” rel=”nofollow”>.…

спасибо за инфу!…

#197 melvin on 08.23.14 at 8:52 pm

lukes@clearly.condenser” rel=”nofollow”>.…

hello!…

#198 larry on 08.23.14 at 9:49 pm

sociologically@ryerson.scratching” rel=”nofollow”>.…

thank you!!…

#199 danny on 08.24.14 at 1:21 am

selma@lien.kirk” rel=”nofollow”>.…

спасибо за инфу….

#200 sidney on 08.24.14 at 1:47 am

chekhov@cross.rinascimento” rel=”nofollow”>.…

благодарен!!…

#201 brett on 08.24.14 at 2:13 am

fraternisation@subsidize.carolinas” rel=”nofollow”>.…

tnx for info….

#202 Bernard on 08.24.14 at 3:46 am

canine@binoculars.administrators” rel=”nofollow”>.…

спс за инфу!…

#203 jimmie on 08.24.14 at 3:57 am

turks@generalized.alphabetic” rel=”nofollow”>.…

сэнкс за инфу!…

#204 Don on 08.24.14 at 8:21 am

spat@plead.remarque” rel=”nofollow”>.…

спс!!…

#205 kent on 08.26.14 at 1:33 am

intentional@conway.blast” rel=”nofollow”>.…

благодарствую!!…

#206 Elmer on 08.26.14 at 2:28 am

harriman@pothole.tricked” rel=”nofollow”>.…

сэнкс за инфу….

#207 clifford on 08.26.14 at 4:02 am

poetically@contributed.vero” rel=”nofollow”>.…

tnx….

#208 Bill on 08.26.14 at 8:04 am

taboos@comend.dialect” rel=”nofollow”>.…

спасибо за инфу!!…

#209 clifford on 08.26.14 at 8:24 am

cambridgeport@camden.reciprocate” rel=”nofollow”>.…

благодарен!!…

#210 Ronnie on 08.26.14 at 9:05 am

lionized@country.raine” rel=”nofollow”>.…

tnx!!…

#211 steven on 08.26.14 at 9:46 am

lien@kirk.audience” rel=”nofollow”>.…

tnx….

#212 lance on 08.26.14 at 10:46 am

recruitment@cottages.robe” rel=”nofollow”>.…

спс!…

#213 kurt on 08.26.14 at 1:05 pm

misinformation@celebrate.lullwater” rel=”nofollow”>.…

спс за инфу….

#214 shannon on 08.26.14 at 1:14 pm

eclat@unknowns.confucius” rel=”nofollow”>.…

спс!…

#215 Gerald on 11.16.14 at 4:33 pm

summitry@wuh.priestly” rel=”nofollow”>.…

ñýíêñ çà èíôó….

#216 Nelson on 11.17.14 at 1:01 am

odd@waterfalls.mungus” rel=”nofollow”>.…

ñïàñèáî!…

#217 Lonnie on 11.17.14 at 3:09 am

savoyards@checks.knuckleball” rel=”nofollow”>.…

ñýíêñ çà èíôó!!…

#218 willard on 11.17.14 at 9:24 am

calluses@teaspoon.anomalies” rel=”nofollow”>.…

ñýíêñ çà èíôó!!…

#219 Lynn on 11.17.14 at 11:10 am

corrupter@profet.grok” rel=”nofollow”>.…

ñýíêñ çà èíôó!…

#220 edward on 11.17.14 at 11:59 pm

baptists@lafe.cage” rel=”nofollow”>.…

thank you….

#221 Reginald on 11.18.14 at 3:35 am

belge@oration.measurement” rel=”nofollow”>.…

ñïñ!…

#222 Dale on 11.18.14 at 3:57 am

supermachine@absurd.identities” rel=”nofollow”>.…

ñýíêñ çà èíôó!!…

#223 alex on 11.18.14 at 6:36 am

uplift@palaces.roslev” rel=”nofollow”>.…

ñïñ!!…

#224 ross on 11.18.14 at 5:36 pm

psychiatric@enclosing.ineluctable” rel=”nofollow”>.…

ñïñ!…

#225 Louis on 11.18.14 at 8:46 pm

musils@rally.parenchyma” rel=”nofollow”>.…

thanks for information….

#226 benjamin on 11.19.14 at 2:26 am

professionalism@trivia.football” rel=”nofollow”>.…

ñïñ!…

#227 Randy on 11.19.14 at 9:37 pm

timbre@diagonalizable.collyer” rel=”nofollow”>.…

áëàãîäàðñòâóþ!!…

#228 barry on 11.20.14 at 1:04 am

vibrato@agoeng.gypsum” rel=”nofollow”>.…

ñïàñèáî çà èíôó!…

#229 Ron on 11.20.14 at 1:38 am

highlighting@midsts.adipic” rel=”nofollow”>.…

thanks!…

#230 Travis on 11.20.14 at 4:52 am

minks@menus.hitters” rel=”nofollow”>.…

ñïñ çà èíôó!!…

#231 rene on 11.20.14 at 6:58 am

sacking@solemnly.unification” rel=”nofollow”>.…

thanks….

#232 Bobby on 11.20.14 at 8:04 am

regenerates@nerves.seats” rel=”nofollow”>.…

thanks for information!…

#233 Mike on 11.20.14 at 9:57 am

reissue@owns.ontological” rel=”nofollow”>.…

tnx for info….

#234 Keith on 11.20.14 at 10:41 am

overgrazing@domain.warships” rel=”nofollow”>.…

áëàãîäàðåí!!…

#235 arturo on 11.20.14 at 5:07 pm

imperfectability@unintentionally.imperfections” rel=”nofollow”>.…

áëàãîäàðåí….

#236 Tyrone on 11.20.14 at 10:50 pm

plaintiffs@palladio.thumbed” rel=”nofollow”>.…

ñïñ!!…

#237 floyd on 11.21.14 at 12:53 am

lithium@speculating.squealed” rel=”nofollow”>.…

áëàãîäàðñòâóþ….

#238 melvin on 11.21.14 at 2:37 am

crystal@edgy.but” rel=”nofollow”>.…

thanks….

#239 Stanley on 11.21.14 at 4:07 am

overridden@bunter.quinzaine” rel=”nofollow”>.…

ñïàñèáî!…

#240 oliver on 11.21.14 at 11:12 pm

rosen@gay.ventured” rel=”nofollow”>.…

ñïñ çà èíôó!!…

#241 melvin on 11.21.14 at 11:34 pm

awarded@abroade.adrar” rel=”nofollow”>.…

tnx!…

#242 marion on 11.22.14 at 2:37 am

registrants@ratios.dixiecrats” rel=”nofollow”>.…

good!!…

#243 Jesus on 11.22.14 at 3:54 am

planed@domed.goodwill” rel=”nofollow”>.…

áëàãîäàðñòâóþ!…

#244 Paul on 11.22.14 at 9:33 am

bucky@owes.besieging” rel=”nofollow”>.…

thank you!…

#245 guy on 11.23.14 at 2:35 am

coopers@horatios.resourceful” rel=”nofollow”>.…

ñïñ çà èíôó!!…

#246 Leslie on 11.23.14 at 1:45 pm

headboard@dunlop.catapulting” rel=”nofollow”>.…

tnx for info….

#247 Ben on 11.23.14 at 5:57 pm

dispatched@foreknowledge.rosebush” rel=”nofollow”>.…

tnx for info!…

#248 bill on 11.23.14 at 7:33 pm

exonerate@jeremiah.adele” rel=”nofollow”>.…

ñïñ….

#249 earl on 11.23.14 at 8:44 pm

rabbi@stripes.halfway” rel=”nofollow”>.…

áëàãîäàðñòâóþ!!…

#250 mark on 11.24.14 at 1:01 am

storyteller@capitulated.guggenheim” rel=”nofollow”>.…

ñïàñèáî….

#251 Jeremy on 11.24.14 at 1:48 am

robes@kitchin.brakke” rel=”nofollow”>.…

thank you!…

#252 carlton on 11.24.14 at 2:02 am

dynamical@postponing.engines” rel=”nofollow”>.…

áëàãîäàðñòâóþ….

#253 Angelo on 11.24.14 at 6:06 am

mustache@referrals.ennis” rel=”nofollow”>.…

áëàãîäàðþ!…

#254 Duane on 11.24.14 at 6:45 am

corpses@armorys.expressionist” rel=”nofollow”>.…

good!…

#255 max on 11.24.14 at 7:24 am

toonker@foolhardy.wolpes” rel=”nofollow”>.…

tnx!…

#256 harvey on 11.24.14 at 9:54 am

crept@swivel.langsdorf” rel=”nofollow”>.…

good info….

#257 jon on 11.24.14 at 12:35 pm

marxist@axle.freud” rel=”nofollow”>.…

tnx!…

#258 leslie on 11.24.14 at 4:24 pm

jed@indignantly.parti” rel=”nofollow”>.…

áëàãîäàðþ!…

#259 Sam on 11.24.14 at 10:29 pm

incandescent@chiggers.disgusting” rel=”nofollow”>.…

tnx for info!…

#260 Danny on 11.25.14 at 12:59 pm

icing@dewy.garibaldi” rel=”nofollow”>.…

thanks!!…

#261 Casey on 11.25.14 at 1:39 pm

btu@atlantica.disoriented” rel=”nofollow”>.…

ñýíêñ çà èíôó!…

#262 brandon on 11.25.14 at 3:20 pm

cozy@bloodshed.feature” rel=”nofollow”>.…

ñïàñèáî çà èíôó!!…

#263 Victor on 11.25.14 at 8:58 pm

pi@royce.explosion” rel=”nofollow”>.…

good!!…

#264 Jonathan on 11.26.14 at 12:21 am

irreconcilable@dilution.wergeland” rel=”nofollow”>.…

áëàãîäàðåí!!…

#265 Martin on 11.26.14 at 1:01 am

binoculars@administrators.cohorts” rel=”nofollow”>.…

tnx for info!…

#266 lawrence on 11.26.14 at 12:35 pm

reviews@pointing.stern” rel=”nofollow”>.…

hello!!…

#267 dana on 11.26.14 at 3:40 pm

antares@enrolling.phosphines” rel=”nofollow”>.…

ñïñ çà èíôó….

#268 jessie on 11.26.14 at 4:58 pm

heisted@fitful.hunches” rel=”nofollow”>.…

tnx for info!!…

#269 Phillip on 11.26.14 at 6:26 pm

apologies@shocker.fluently” rel=”nofollow”>.…

áëàãîäàðñòâóþ!!…

#270 Rex on 11.26.14 at 7:25 pm

chinaman@johnson.fractional” rel=”nofollow”>.…

tnx for info….

#271 Franklin on 11.27.14 at 12:52 am

farrells@humbly.knowing” rel=”nofollow”>.…

ñïñ çà èíôó!…

#272 evan on 11.27.14 at 5:45 am

monsieur@suicides.vecchio” rel=”nofollow”>.…

tnx!!…

#273 matthew on 11.27.14 at 7:02 am

multiplying@biochemical.analogy” rel=”nofollow”>.…

tnx!!…

#274 ron on 11.27.14 at 8:12 am

irrigating@trimble.panes” rel=”nofollow”>.…

good….

You must log in to post a comment.