Me
About
Gallery
Company
Girl


Projects
Ruby on Rails
Basecamp
Highrise
Backpack
Campfire
Ta-da List
Writeboard


More
Feed
Archives

November 19, 14:43

Expanding the domain language of Rails

After looking closer at the dependency injection proposal by Jamis Buck and talking to Dave Thomas about his hesitations with full-blown DI, I had all these thoughts spinning and flying around my head. The first representation of these thoughts are that requires should be made part of the domain language, so from the next release it'll be possible to scrap almost all your explicit require statements.

I've added three new words: model, service, and observer. The first two will just do a regular require, but will then also enable you to introspect the controller for its dependencies. The latter will also instantiate the observer, so it's active:

class MsgController < AbstractApplicationController
  model    :post, :comment, :attachment
  service  :notification_service
  observer :comment_observer
end
 
MsgController.dependencies_on(:model)    # => [ :post, :comment, :attachment ]
MsgController.dependencies_on(:service)  # => [ :notification_service ]
MsgController.dependencies_on(:observer) # => [ :comment_observer ]

This it not only shorter and more expressive, it also opens up to a world of interesting automation and scaffolding when you can programatically inquire about the dependencies of a controller. A simple example would be that fixtures for functional testing the controller could automatically be managed and setup.

I've also went ahead and improved associations, so they now too automatically will attempt to require the class they need. So instead of repeating yourself with:

require 'comment'
 
class Post < ActiveRecord::Base
  has_many :comments
end

You can now leave out the explicit require and just rely on Active Record to follow your association specification and do the require:

class Post < ActiveRecord::Base
  has_many :comments
end

This should also spell an end to all those annoying errors you get when you forgot to require a class before starting to use it. Just like I was thrilled to be rid of the semi-colon at the end of each line when I ditched PHP for Ruby, this will further swift the burden of repetition over to the framework.

Do the Mocking
But this is not all! In companionship with Dave Thomas, I've relieved the primary pain that got me interested in dependency injection in the first place: How to inject mocks in hard to reach places? Specifically, how could I replace my FTPServer, PaymentGateway, and Notification services in Basecamp with mocks that didn't rely on external machines and that I could inquire about how they were called?

In the next version of Rails, that'll be incredibly easy. There's a new directory called test/mocks where you can drop in any class that you'd like to see replaced with a mock under the test environment. So if I want to mock out the PaymentGateway in Basecamp, I'll create the following file in test/mocks/payment_gateway.rb:

require 'models/payment_gateway'
 
class PaymentGateway
  def commit
    SuccessfulSubmission.new
  end
end

I require the original payment gateway first, then I re-open the class (Ruby has open classes, you can reopen anything — even core classes!) and mock out the behavior that I want to change. In this case, it's the commit method that would otherwise start to talk to the Authorize.net server.

You could also forgo requiring the original class and just use a straight mock, but it's often much nicer to rely on as much "real" functionality as possible. Just mock out the few methods that would otherwise make testing hard to do.

Anyway, these latest breakthroughs does cast some doubt in my mind on whether full-blown dependency injection is needed in Rails. All of the additions above where created with an absolute minimal amount of code. They give zeroconf dependency injection for mocks and the conceptual complexity of Rails doesn't go up one bit.

I'll be sure to revisit Jamis' proposal and look for other advantages of integrating with Needle, though. These improvements, however, have cured my immediate needs for injection. I got my fix, so to speak.

UPDATE: If you want to try out these new features, the beta gems have them. Upgrade with gem update -s http://gems.rubyonrails.org.


Challenge by Vincent Foley on November 19, 16:19

I think I speak for every documenter when I say "GNYAH! Curse you David, curse you!" :)

Seriously, this is hot stuff, but I just hope that you still remember what you said at RubyConf about having a good trade-off between an ivory tower and quick and dirty PHP-like framework: we don't want the new comers to learn about Ruby, Rails, databases, Dependency Injection, the Danish Monarch System, the Canadian maple syrup industry and radasaq in order to be able to learn Rails.

I think I'm gonna put off writing my new application and keep thinking about its design (which is what I usually never do, so this is a good thing ;)) until the new Rails comes out. In the mean time, I will continue my documenting of Rails.

Good day David.

Challenge by David Heinemeier Hansson on November 19, 16:26

That's one of my prime concerns about including real DI in Rails. It would need to offer significant and substantial improvements over solutions like the one described above before it's worth the conceptual complexity.

I think these new changes will make it easier for the new comers to adopt Rails. Especially that requires will be handled almost automatically now. And that observers have been made easier and more obvious in their usage.

I'm excited too! And this road has a lot of additional simplifications down it that I can't wait to get in.

Oh, and important to mention too is that all this stuff was implemented this morning. Gotta love Less Software ;)

Challenge by Vinu on November 19, 21:22

What exactly is Less Software?

Challenge by Tobias Luetke on November 19, 21:29

Less Software usually refers to almost but not quite More Software.

Challenge by Vinu on November 20, 2:22

Hi David,

I searched all the archives of your site and searched the Rails site too, and I came upon references of "Less software" but I coudn't really find any information on it. I take it that it's basically a way to develop software by doing the simplest thing that works, (analagous to XP principles). Is there anything else to it?

Anyways, I just recently discovered Rails and Ruby and am inspired by the productivity they bring. I am slowly trying to learn Rails (and Ruby as well!) and was just interested in your methodology of software development.

Peace,
Vinu.

Challenge by David Heinemeier Hansson on November 20, 2:30

I'll do a post on Less Software shortly. Thanks for the interest, Vinu.

Challenge by Marianne on November 25, 12:41

Har du overvejet at have to forskellige blogs? En til ruby/rails og en til other stuff :) ?!

Challenge by penis enlargement on May 31, 0:47

Best penis enlargement articles and penis enlargement product reviews. Penis enlargement product reviews, penis enlargement strategies. Absolutely the best penis enlargement site.

Enlarge your penile! Viagra online, free penis enlargement exercises, penis enlargement products.
http://www.penis-health-center.com/

Challenge by encyclopedia on June 01, 16:20

encyclopedia
online encyclopedia
encyclopedia britanica
medical encyclopedia
wikipedia encyclopedia
catholic encyclopedia
encarta encyclopedia
world book encyclopedia
free online encyclopedia
encyclopedia main page
free encyclopedia
encyclopedia americana


search
job search
google search
search engine
people search
mp3 search engine
google search engine
search engine marketing
major search engine
search engine optimization
exact search
search engine placement
free people search
web search
type your search here
music search
yahoo search
enter the search term
search engine promotion
ranking high on search engine
spybot search and destroy
msn search
google search engine home page
film search
job search engine
word search
email search
increase search engine ranking
mp3 search
search music video
lyric search
sex search
address search
encyclopedia
online encyclopedia
encyclopedia britanica
medical encyclopedia
wikipedia encyclopedia
catholic encyclopedia
encarta encyclopedia
world book encyclopedia
free online encyclopedia
encyclopedia main page
free encyclopedia
encyclopedia americana
search zaba
apartment search
file mainbackground.gif search
photo search
yahoo people search
city search
search online
star search
newsgroup search engine
zip code search
improve search engine ranking
search engine ranking
song lyric search
lyric search engine
college search
car search
family search
search now
aol search
high search engine placement
executive search firm
search engine submission
internet search engine placement
phone search
personal web site
music web site
web site download software
web site
web site design
christian web site
dating web site
build a web site
web site promotion
free web site builder
free e mail web site
web site marketing
web site software
make your own web site
web site optimization
web site name
create a web site
automotive dealer web site
custom web site design
web site design los angeles
web site design company
web site traffic
web site template
encyclopedia
online encyclopedia
encyclopedia britanica
medical encyclopedia
wikipedia encyclopedia
catholic encyclopedia
encarta encyclopedia
world book encyclopedia
free online encyclopedia
encyclopedia main page
free encyclopedia
encyclopedia americana
http://www.websitesgo.com/
http://www.websitesgo.com/index.php/Main_Page
http://www.websitesgo.com/index.php/Alfredo_Palacio
http://www.websitesgo.com/index.php/President_of_Ecuador
http://www.websitesgo.com/index.php/National_Congress_of_Ecuador
http://www.websitesgo.com/index.php/Lucio_Gutiérrez
http://www.websitesgo.com/index.php/Germany
http://www.websitesgo.com/index.php/Cardinal_(Catholicism)
http://www.websitesgo.com/index.php/Pope_Benedict_XVI
http://www.websitesgo.com/index.php/Papal_election
http://www.websitesgo.com/index.php/Regnal_name
http://www.websitesgo.com/index.php/Oklahoma_City_bombing
http://www.websitesgo.com/index.php/Euripides
http://www.websitesgo.com/index.php/Sophocles
http://www.websitesgo.com/index.php/Archilochus
http://www.websitesgo.com/index.php/Oxyrhynchus_Gospels
http://www.websitesgo.com/index.php/Classical_antiquity
http://www.websitesgo.com/index.php/Oxyrhynchus
http://www.websitesgo.com/index.php/Egypt
http://www.websitesgo.com/index.php/Papyrus
http://www.websitesgo.com/index.php/Recent_deaths

Challenge by roundandbrown on June 04, 0:07

8thstreetlatinas 8th street latinas big naturals bignaturals boysfirsttime boys first time camcrush cam crush captainstabbin captain stabbin cumfiesta cum fiesta cumgirls cum girls eurosexparties euro sex parties firsttimeauditions first-time-auditions inthevip in the vip megacockcravers mega cock cravers mikeinbrazil mike in brazil mikesapartment mikes apartment milfhunter milf hunter roundandbrown round and brown streetblowjobs street blowjobs trannysurprise tranny surprise welivetogether we live together 8thstreetlatinas 8th street latinas big naturals bignaturals boysfirsttime boys first time camcrush cam crush captainstabbin captain stabbin cumfiesta cum fiesta cumgirls cum girls eurosexparties euro sex parties firsttimeauditions first-time-auditions inthevip in the vip megacockcravers mega cock cravers mikeinbrazil mike in brazil mikesapartment mikes apartment milfhunter milf hunter roundandbrown round and brown streetblowjobs street blowjobs trannysurprise tranny surprise welivetogether we live together 8thstreetlatinas 8th street latinas big naturals bignaturals boysfirsttime boys first time camcrush cam crush captainstabbin captain stabbin cumfiesta cum fiesta cumgirls cum girls eurosexparties euro sex parties firsttimeauditions first-time-auditions inthevip in the vip megacockcravers mega cock cravers mikeinbrazil mike in brazil mikesapartment mikes apartment milfhunter milf hunter roundandbrown round and brown streetblowjobs street blowjobs trannysurprise tranny surprise welivetogether we live together 8thstreetlatinas 8th street latinas big naturals bignaturals boysfirsttime boys first time camcrush cam crush captainstabbin captain stabbin cumfiesta cum fiesta cumgirls cum girls eurosexparties euro sex parties firsttimeauditions first-time-auditions inthevip in the vip megacockcravers mega cock cravers mikeinbrazil mike in brazil mikesapartment mikes apartment milfhunter milf hunter roundandbrown round and brown streetblowjobs street blowjobs trannysurprise tranny surprise welivetogether we live together 8thstreetlatinas 8th street latinas big naturals bignaturals boysfirsttime boys first time camcrush cam crush captainstabbin captain stabbin cumfiesta cum fiesta cumgirls cum girls eurosexparties euro sex parties firsttimeauditions first-time-auditions inthevip in the vip megacockcravers mega cock cravers mikeinbrazil mike in brazil mikesapartment mikes apartment milfhunter milf hunter roundandbrown round and brown streetblowjobs street blowjobs trannysurprise tranny surprise welivetogether we live together 8thstreetlatinas 8th street latinas big naturals bignaturals boysfirsttime boys first time camcrush cam crush captainstabbin captain stabbin cumfiesta cum fiesta cumgirls cum girls eurosexparties euro sex parties firsttimeauditions first-time-auditions inthevip in the vip megacockcravers mega cock cravers mikeinbrazil mike in brazil mikesapartment mikes apartment milfhunter milf hunter roundandbrown round and brown streetblowjobs street blowjobs trannysurprise tranny surprise welivetogether we live together 8thstreetlatinas 8th street latinas big naturals bignaturals boysfirsttime boys first time camcrush cam crush captainstabbin captain stabbin cumfiesta cum fiesta cumgirls cum girls eurosexparties euro sex parties firsttimeauditions first-time-auditions inthevip in the vip megacockcravers mega cock cravers mikeinbrazil mike in brazil mikesapartment mikes apartment milfhunter milf hunter roundandbrown round and brown streetblowjobs street blowjobs trannysurprise tranny surprise welivetogether we live together 8thstreetlatinas 8th street latinas big naturals bignaturals boysfirsttime boys first time camcrush cam crush captainstabbin captain stabbin cumfiesta cum fiesta cumgirls cum girls eurosexparties euro sex parties firsttimeauditions first-time-auditions inthevip in the vip megacockcravers mega cock cravers mikeinbrazil mike in brazil mikesapartment mikes apartment milfhunter milf hunter roundandbrown round and brown streetblowjobs street blowjobs trannysurprise tranny surprise welivetogether we live together 8thstreetlatinas 8th street latinas big naturals bignaturals boysfirsttime boys first time camcrush cam crush captainstabbin captain stabbin cumfiesta cum fiesta cumgirls cum girls eurosexparties euro sex parties firsttimeauditions first-time-auditions inthevip in the vip megacockcravers mega cock cravers mikeinbrazil mike in brazil mikesapartment mikes apartment milfhunter milf hunter roundandbrown round and brown streetblowjobs street blowjobs trannysurprise tranny surprise welivetogether we live together 8thstreetlatinas 8th street latinas big naturals bignaturals boysfirsttime boys first time camcrush cam crush captainstabbin captain stabbin cumfiesta cum fiesta cumgirls cum girls eurosexparties euro sex parties firsttimeauditions first-time-auditions inthevip in the vip megacockcravers mega cock cravers mikeinbrazil mike in brazil mikesapartment mikes apartment milfhunter milf hunter roundandbrown round and brown streetblowjobs street blowjobs trannysurprise tranny surprise welivetogether we live together 8thstreetlatinas 8th street latinas big naturals bignaturals boysfirsttime boys first time camcrush cam crush captainstabbin captain stabbin cumfiesta cum fiesta cumgirls cum girls eurosexparties euro sex parties firsttimeauditions first-time-auditions inthevip in the vip megacockcravers mega cock cravers mikeinbrazil mike in brazil mikesapartment mikes apartment milfhunter milf hunter roundandbrown round and brown streetblowjobs street blowjobs trannysurprise tranny surprise welivetogether we live together 8thstreetlatinas 8th street latinas big naturals bignaturals boysfirsttime boys first time camcrush cam crush captainstabbin captain stabbin cumfiesta cum fiesta cumgirls cum girls eurosexparties euro sex parties firsttimeauditions first-time-auditions inthevip in the vip megacockcravers mega cock cravers mikeinbrazil mike in brazil mikesapartment mikes apartment milfhunter milf hunter roundandbrown round and brown streetblowjobs street blowjobs trannysurprise tranny surprise welivetogether we live together 8thstreetlatinas 8th street latinas big naturals bignaturals boysfirsttime boys first time camcrush cam crush captainstabbin captain stabbin cumfiesta cum fiesta cumgirls cum girls eurosexparties euro sex parties firsttimeauditions first-time-auditions inthevip in the vip megacockcravers mega cock cravers mikeinbrazil mike in brazil mikesapartment mikes apartment milfhunter milf hunter roundandbrown round and brown streetblowjobs street blowjobs trannysurprise tranny surprise welivetogether we live together

8thstreetlatinas
8th street latinas
big naturals
bignaturals
boysfirsttime
boys first time
camcrush
cam crush
captainstabbin captain stabbin
cumfiesta
cum fiesta
cumgirls
cum girls
eurosexparties
euro sex parties
firsttimeauditions
first-time-auditions
inthevip
in the vip
megacockcravers
mega cock cravers mikeinbrazil
mike in brazil
mikesapartment
mikes apartment
milfhunter
milf hunter
roundandbrown
round and brown
streetblowjobs
street blowjobs
trannysurprise
tranny surprise
welivetogether
we live together


http://www.masturbatehere.com/nd/8thstreetlatinas/
http://www.masturbatehere.com/nd/8th-street-latinas/
http://www.masturbatehere.com/nd/big-naturals/
http://www.masturbatehere.com/nd/bignaturals
http://www.masturbatehere.com/nd/boysfirsttime
http://www.masturbatehere.com/nd/boys-first-time
http://www.masturbatehere.com/nd/camcrush
http://www.masturbatehere.com/nd/cam-crush
http://www.masturbatehere.com/nd/captainstabbin
http://www.masturbatehere.com/nd/captain-stabbin
http://www.masturbatehere.com/nd/cumfiesta
http://www.masturbatehere.com/nd/cum-fiesta
http://www.masturbatehere.com/nd/cumgirls
http://www.masturbatehere.com/nd/cum-girls
http://www.masturbatehere.com/nd/eurosexparties
http://www.masturbatehere.com/nd/euro-sex-parties
http://www.masturbatehere.com/nd/firsttimeauditions
http://www.masturbatehere.com/nd/first time auditions
http://www.masturbatehere.com/nd/inthevip
http://www.masturbatehere.com/nd/in-the-vip
http://www.masturbatehere.com/nd/megacockcravers
http://www.masturbatehere.com/nd/mega-cock-cravers
http://www.masturbatehere.com/nd/mikeinbrazil
http://www.masturbatehere.com/nd/mike-in-brazil
"http://www.masturbatehere.com/nd/mikesapartment
http://www.masturbatehere.com/nd/mikes-apartment
http://www.masturbatehere.com/nd/milfhunter
http://www.masturbatehere.com/nd/milf-hunter
http://www.masturbatehere.com/nd/roundandbrown
http://www.masturbatehere.com/nd/round-and-brown
http://www.masturbatehere.com/nd/streetblowjobs
http://www.masturbatehere.com/nd/street-blowjobs
http://www.masturbatehere.com/nd/trannysurprise
http://www.masturbatehere.com/nd/tranny-surprise
http://www.masturbatehere.com/nd/welivetogether
http://www.masturbatehere.com/nd/we-live-together
http://www.masturbatehere.com/nd/

Challenge by truly true on June 04, 13:59

Travel
Timeshare, Car Rentals, Honeymoons, Vacation Rentals, Hotels, Travel Insurance, Las Vegas, Cruises, Airline Tickets, Business Travel Health
Contact Lens, Health Insurance, Diabetes, HGH, Dental Plans, Weight Loss, Hair Loss, Spas, Health Care, Vitamins Homes
Home Loans, Renters Insurance, Home Insurance, Real Estate, Home Selling, Moving, Apartments, Furniture, Interior Design, Air Purifiers

Finance
Debt Consolidation, Refinance, Cash Advance, Mortgages, Credit Repair, Credit Cards, Credit Reports, Auto Loans, Investing, Online Payments Internet
Spam Filter, Popup Blocker, Parental Control, Web Hosting, Domain Names, Internet Service, Web Design, Internet Marketing, Internet Security, DSL Education
Distance Learning, Adult Education, Degrees, Jobs, Books, Business Schools, Online Training, Term Papers, Colleges, Home School

Insurance
Term Life Insurance, Auto Insurance, Health Insurance, Home Insurance, Dental Plans, Travel Insurance, Business Insurance Business
Incorporate, Business Credit Cards, Merchant Accounts, Work At Home, Franchise, Ecommerce, Make Money, Accounting, Business Opportunities, Human Resources Legal
Incorporate, Lawyers, Divorce, Surveillance, Malpractice, Intellectual Property, Prepaid Legal, Wills, Patents, Investigations

Cars
Auto Insurance, Car Loans, Car Rentals, SUVs, Car Accidents, Auto Warranty, RVs, Trucks, Auto Leases, Used Cars Shopping
Gifts, Computers, Toys, DVD, Electronics, Flowers, Jewelry, Digital Cameras, Gift Certificates, Books Entertainment
Music, Posters, Concert Tickets, Karaoke, DVD Players, Home Theater, CD Players, Car Audio, MP3 Players, Video Games

http://www.megaprogramy.pl
programy

Challenge by truly true on June 04, 23:33

Travel
Timeshare, Car Rentals, Honeymoons, Vacation Rentals, Hotels, Travel Insurance, Las Vegas, Cruises, Airline Tickets, Business Travel Health
Contact Lens, Health Insurance, Diabetes, HGH, Dental Plans, Weight Loss, Hair Loss, Spas, Health Care, Vitamins Homes
Home Loans, Renters Insurance, Home Insurance, Real Estate, Home Selling, Moving, Apartments, Furniture, Interior Design, Air Purifiers

Finance
Debt Consolidation, Refinance, Cash Advance, Mortgages, Credit Repair, Credit Cards, Credit Reports, Auto Loans, Investing, Online Payments Internet
Spam Filter, Popup Blocker, Parental Control, Web Hosting, Domain Names, Internet Service, Web Design, Internet Marketing, Internet Security, DSL Education
Distance Learning, Adult Education, Degrees, Jobs, Books, Business Schools, Online Training, Term Papers, Colleges, Home School

Insurance
Term Life Insurance, Auto Insurance, Health Insurance, Home Insurance, Dental Plans, Travel Insurance, Business Insurance Business
Incorporate, Business Credit Cards, Merchant Accounts, Work At Home, Franchise, Ecommerce, Make Money, Accounting, Business Opportunities, Human Resources Legal
Incorporate, Lawyers, Divorce, Surveillance, Malpractice, Intellectual Property, Prepaid Legal, Wills, Patents, Investigations

Cars
Auto Insurance, Car Loans, Car Rentals, SUVs, Car Accidents, Auto Warranty, RVs, Trucks, Auto Leases, Used Cars Shopping
Gifts, Computers, Toys, DVD, Electronics, Flowers, Jewelry, Digital Cameras, Gift Certificates, Books Entertainment
Music, Posters, Concert Tickets, Karaoke, DVD Players, Home Theater, CD Players, Car Audio, MP3 Players, Video Games

http://www.megaprogramy.pl
programy

Challenge by truly true on June 05, 16:49

Travel
Timeshare, Car Rentals, Honeymoons, Vacation Rentals, Hotels, Travel Insurance, Las Vegas, Cruises, Airline Tickets, Business Travel Health
Contact Lens, Health Insurance, Diabetes, HGH, Dental Plans, Weight Loss, Hair Loss, Spas, Health Care, Vitamins Homes
Home Loans, Renters Insurance, Home Insurance, Real Estate, Home Selling, Moving, Apartments, Furniture, Interior Design, Air Purifiers

Finance
Debt Consolidation, Refinance, Cash Advance, Mortgages, Credit Repair, Credit Cards, Credit Reports, Auto Loans, Investing, Online Payments Internet
Spam Filter, Popup Blocker, Parental Control, Web Hosting, Domain Names, Internet Service, Web Design, Internet Marketing, Internet Security, DSL Education
Distance Learning, Adult Education, Degrees, Jobs, Books, Business Schools, Online Training, Term Papers, Colleges, Home School

Insurance
Term Life Insurance, Auto Insurance, Health Insurance, Home Insurance, Dental Plans, Travel Insurance, Business Insurance Business
Incorporate, Business Credit Cards, Merchant Accounts, Work At Home, Franchise, Ecommerce, Make Money, Accounting, Business Opportunities, Human Resources Legal
Incorporate, Lawyers, Divorce, Surveillance, Malpractice, Intellectual Property, Prepaid Legal, Wills, Patents, Investigations

Cars
Auto Insurance, Car Loans, Car Rentals, SUVs, Car Accidents, Auto Warranty, RVs, Trucks, Auto Leases, Used Cars Shopping
Gifts, Computers, Toys, DVD, Electronics, Flowers, Jewelry, Digital Cameras, Gift Certificates, Books Entertainment
Music, Posters, Concert Tickets, Karaoke, DVD Players, Home Theater, CD Players, Car Audio, MP3 Players, Video Games

http://www.megaprogramy.pl
programy

Challenge by shoeman on June 05, 17:55

Travel
Timeshare, Car Rentals, Honeymoons, Vacation Rentals, Hotels, Travel Insurance, Las Vegas, Cruises, Airline Tickets, Business Travel
http://site.shoe-bomb.com
ambien Health
Contact Lens, Health Insurance, Diabetes, HGH, Dental Plans, Weight Loss, Hair Loss, Spas, Health Care, Vitamins Homes
Home Loans, Renters Insurance, Home Insurance, Real Estate, Home Selling, Moving, Apartments, Furniture, Interior Design, Air Purifiers

Finance
Debt Consolidation, Refinance, Cash Advance, Mortgages, Credit Repair, Credit Cards, Credit Reports, Auto Loans, Investing, Online Payments Internet
Spam Filter, Popup Blocker, Parental Control, Web Hosting, Domain Names, Internet Service, Web Design, Internet Marketing, Internet Security, DSL Education
Distance Learning, Adult Education, Degrees, Jobs, Books, Business Schools, Online Training, Term Papers, Colleges, Home School

Insurance
Term Life Insurance, Auto Insurance, Health Insurance, Home Insurance, Dental Plans, Travel Insurance, Business Insurance Business
Incorporate, Business Credit Cards, Merchant Accounts, Work At Home, Franchise, Ecommerce, Make Money, Accounting, Business Opportunities, Human Resources Legal
Incorporate, Lawyers, Divorce, Surveillance, Malpractice, Intellectual Property, Prepaid Legal, Wills, Patents, Investigations

Cars
Auto Insurance, Car Loans, Car Rentals, SUVs, Car Accidents, Auto Warranty, RVs, Trucks, Auto Leases, Used Cars Shopping
Gifts, Computers, Toys, DVD, Electronics, Flowers, Jewelry, Digital Cameras, Gift Certificates, Books Entertainment
Music, Posters, Concert Tickets, Karaoke, DVD Players, Home Theater, CD Players, Car Audio, MP3 Players, Video Games

http://www.portal100.com

http://www.megaprogramy.pl
programy
search

Challenge by penis enlargement on June 06, 22:49

Penis enlargement techniques, penis enlargement articles, free penis enlargement tips, penis enlargement device, penis enlargement 100% secure, penis enlargement order now, penis enlargement doctor approved, penis enlargement reviews, penis enlargement articles, penis enlargement site, about penis enlargement, penis enlargement diary, penis enlargement blog.
http://www.penis-health-center.com/

penis enlargement

Challenge by loans on June 11, 15:02

internet loans, loans, quick loans, fast loans, car loans, home loans, auto loans, business loans.
http://loans.big-black-pimp.net/

loans

Challenge by casino on June 11, 16:19

casino, casino online, casino play, online casino.
http://casino.galleryse.com/

casino

Challenge by poker on June 11, 17:45

poker, poker online, texah holdem poker, play poker, gambling.
http://poker.audreylivegals.com/

poker