sex_it_up 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Jim Jones
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,40 @@
1
+ == Description
2
+ Turn your boring demo website and placeholder images into a beautiful display of artwork.
3
+
4
+ In your Gemfile, add the following :
5
+ gem "sex_it_up", ">= 1.0.0"
6
+
7
+ Then perform the following from the root of your application directory :
8
+
9
+ bundle install
10
+
11
+ Now we need to copy over the needed migration :
12
+ rails g sex_it_up
13
+ rake db:migrate
14
+
15
+ == Displaying Images
16
+
17
+ If you want to display a random image for the term 'dog', first add the following to your Rakefile :
18
+ require 'tasks/sex_it_up'
19
+
20
+ Once you have the rake task available, you can issue the following rake command to warm the image cache for a given term :
21
+ rake sex_it_up:cache[<Term>]
22
+
23
+ e.g. :
24
+ rake sex_it_up:cache["dog"]
25
+
26
+ Once the rake task has completed, change your erb view to call the following helper :
27
+ sexy_image('dog', :width => 100, :height => 100)
28
+
29
+ This helper will find a random image for the given term, scale it to the passed in dimensions, and display it.
30
+
31
+ == Other Uses
32
+ If you wanted to replace your boring default user avatars, you could do the following
33
+ user.icon = SexItUp::SexItUpImage.find_all('dog').random.first
34
+
35
+ == Sample Screenshot
36
+ http://i.imgur.com/bmHvj.png
37
+
38
+ == Copyright
39
+
40
+ Copyright (c) 2010 Jim Jones. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,50 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'rake'
11
+
12
+ require 'jeweler'
13
+ Jeweler::Tasks.new do |gem|
14
+ gem.name = "sex_it_up"
15
+ gem.summary = %Q{Replace your boring place-holder images with beautiful public domain images of history's greatest artwork and sculptures.}
16
+ gem.description = %Q{SexItUp allows for the easy drop-in of public domain images for site mockups and user avatars.}
17
+ gem.email = "jjones@aantix.com"
18
+ gem.homepage = "http://github.com/aantix/sex_it_up"
19
+ gem.authors = ["Jim Jones"]
20
+ gem.require_path = 'lib'
21
+ gem.version = "1.0.0"
22
+ gem.add_development_dependency "paperclip", ">= 2.3.5"
23
+ gem.add_development_dependency "mechanize", ">= 1.0.0"
24
+ gem.add_development_dependency "google-search", ">= 1.0.2"
25
+ gem.files = %w(MIT-LICENSE README.textile Rakefile init.rb) + Dir.glob("{generators,lib,spec}/**/*")
26
+ end
27
+ Jeweler::RubygemsDotOrgTasks.new
28
+
29
+ require 'rspec/core'
30
+ require 'rspec/core/rake_task'
31
+ RSpec::Core::RakeTask.new(:spec) do |spec|
32
+ spec.pattern = FileList['spec/**/*_spec.rb']
33
+ end
34
+
35
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
36
+ spec.pattern = 'spec/**/*_spec.rb'
37
+ spec.rcov = true
38
+ end
39
+
40
+ task :default => :spec
41
+
42
+ require 'rake/rdoctask'
43
+ Rake::RDocTask.new do |rdoc|
44
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
45
+
46
+ rdoc.rdoc_dir = 'rdoc'
47
+ rdoc.title = "sex_it_up #{version}"
48
+ rdoc.rdoc_files.include('README*')
49
+ rdoc.rdoc_files.include('lib/**/*.rb')
50
+ end
@@ -0,0 +1,26 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+
4
+ class SexItUpGenerator < Rails::Generators::Base
5
+ include Rails::Generators::Migration
6
+
7
+ #source_root = File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
8
+ def self.source_root
9
+ @source_root ||= File.join(File.dirname(__FILE__), 'templates')
10
+ end
11
+
12
+ def generate_migration
13
+ migration_template "sex_it_up_migration.rb", "db/migrate/create_sex_it_up_images.rb"
14
+ end
15
+
16
+ protected
17
+
18
+ def self.next_migration_number(dirname)
19
+ if ActiveRecord::Base.timestamped_migrations
20
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
21
+ else
22
+ "%.3d" % (current_migration_number(dirname) + 1)
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,22 @@
1
+ require 'sex_it_up'
2
+
3
+ class CreateSexItUpImages < ActiveRecord::Migration
4
+ def self.up
5
+ #load(File.dirname(__FILE__) + '/../../../spec/schema.rb')
6
+ create_table "sex_it_up_images" do |t|
7
+ t.string :image_search_term
8
+ t.string :image_original_url
9
+ t.string :image_url
10
+ t.string :image_file_name
11
+ t.string :image_content_type
12
+ t.integer :image_file_size
13
+ t.datetime :image_updated_at
14
+ end
15
+
16
+ end
17
+
18
+ def self.down
19
+ drop_table :sex_it_up_images
20
+ end
21
+
22
+ end
data/lib/sex_it_up.rb ADDED
@@ -0,0 +1,137 @@
1
+ require 'rubygems'
2
+ require 'paperclip'
3
+ require 'active_record'
4
+ require 'action_view'
5
+ require 'google-search'
6
+ require 'mechanize'
7
+ require 'open-uri'
8
+
9
+
10
+ Paperclip.configure
11
+ Paperclip::Railtie.insert
12
+
13
+ module SexItUp
14
+
15
+ class SexItUpImage < ActiveRecord::Base
16
+ RESULT_LIMIT = 10
17
+
18
+ scope :images_for, lambda {|term|
19
+ where(['image_search_term = ?', term])
20
+ }
21
+
22
+ scope :random, lambda {
23
+ max_id = connection.select_value("select max(id) from #{self.table_name}")
24
+ where("id >= #{rand(max_id)}")
25
+ }
26
+
27
+ attr_reader :sizes
28
+ has_attached_file :image, :styles => Proc.new { |i| i.instance.attachment_sizes }
29
+
30
+ # Want to give each user a unique avatar? Assign their profile image to the image returned here.
31
+ def self.find_all(term)
32
+ query = "site:commons.wikimedia.org \"is in the public domain\" #{term}"
33
+ cache_search(query, term)
34
+ images_for(term)
35
+ end
36
+
37
+ def set_attachment_sizes(sizes = {:thumb => ["100x100"]})
38
+ @sizes = sizes
39
+ end
40
+
41
+ def attachment_sizes
42
+ @sizes||={:thumb => ["100x100"]}
43
+ end
44
+
45
+ private
46
+ def self.cache_search(query, term)
47
+ num_results = 0
48
+
49
+ Google::Search::Web.new(:query => query).each do |result|
50
+ page = agent.get(result.uri)
51
+ image = find_image_link(page)
52
+
53
+ cache(term, image.href) unless image.nil?
54
+
55
+ num_results+=1
56
+ break if num_results == RESULT_LIMIT
57
+ end
58
+
59
+ end
60
+
61
+ def self.find_image_link(page)
62
+ page.links.detect {|link| link.href =~ /http:\/\/upload.wikimedia.org\/wikipedia\/commons\/\w\// }
63
+ end
64
+
65
+ def self.agent
66
+ @agent||= Mechanize.new
67
+ @agent.max_history = 1
68
+ @agent.user_agent_alias = 'Mac Safari'
69
+ @agent
70
+ end
71
+
72
+ def self.cache(search_term, img_url)
73
+ # No need to re-retrieve file if already done so
74
+ image = find_by_image_original_url(img_url)
75
+ return image unless image.nil?
76
+
77
+ #image = open img_url
78
+ image = open(URI.parse(img_url))
79
+
80
+ # The original_filename passed in from a file open is unintelligible;
81
+ # change it to something better. Feels 'dirty' but admittance is the first step.
82
+ def image.original_filename; CGI.unescape(base_uri.path.split('/').last); end
83
+ image.original_filename.blank? ? nil : image
84
+
85
+ # Any sort of failure on record creation is probably a file format not supported (e.g. .ogg)
86
+ SexItUpImage.create(:image_original_url => img_url,
87
+ :image_search_term => search_term,
88
+ :image => image)
89
+ end
90
+
91
+ end
92
+
93
+
94
+ module SexItUpHelper
95
+ # Pass in a search term (e.g. 'dogs') and the resolution you
96
+ # want the image to be displayed at.
97
+ def sexy_image(term, opts = {:width => 100, :height => 100})
98
+
99
+ # The loving is a mess, what happened to all of the feeling?
100
+ # I thought it was for real; babies, rings and fools kneeling
101
+ # And words of pledging trust and lifetimes stretching forever
102
+ # So what went wrong? It was a lie, it crumbled apart
103
+ # Ghost figures of past, present, future haunting the heart
104
+ sexy_image = term.class == SexItUp::SexItUpImage ? term : SexItUpImage.where(['image_search_term = ?', term]).random.first
105
+
106
+ if sexy_image.nil? || sexy_image.blank?
107
+ # No image object passed in or found; let's go search.
108
+
109
+ sexy_image = SexItUpImage.find_all(term).random.first
110
+ end
111
+
112
+ unless sexy_image.nil?
113
+ style = "#{opts[:width]}x#{opts[:height]}"
114
+ style_sym = "s_#{style}".to_sym
115
+ style_hash = {style_sym => [style]}
116
+
117
+ sexy_image.set_attachment_sizes(style_hash)
118
+ sexy_image.image.reprocess! unless File.exist?(sexy_image.image.path(style_sym)) # No need for reprocessing if size already exists
119
+
120
+ tag = "<img"
121
+ tag += " class=\"#{opts[:class]}\"" if opts[:class]
122
+ tag += " src=\"#{sexy_image.image.url(style_sym)}\""
123
+ tag += " alt=\"#{opts[:alt]}\"" if opts[:alt]
124
+ tag += " title=\"#{opts[:title]}\"" if opts[:title]
125
+ tag += " />"
126
+
127
+ return tag.html_safe
128
+ end
129
+
130
+ nil
131
+ end
132
+
133
+ end
134
+
135
+ end
136
+
137
+ ActionView::Base.send :include, SexItUp::SexItUpHelper
@@ -0,0 +1,10 @@
1
+ require 'sex_it_up'
2
+
3
+ namespace :sex_it_up do
4
+
5
+ desc "Retrieve and cache all of the public domain images for a given search term."
6
+ task :cache, :term, :needs => :environment do |t, args|
7
+ SexItUp::SexItUpImage.find_all(args[:term])
8
+ end
9
+
10
+ end
@@ -0,0 +1,7 @@
1
+ Factory.define :sex_it_up_image, :class => SexItUp::SexItUpImage do |i|
2
+ #i.image File.new('spec/factories/Plato_and_Aristotle_in_The_School_of_Athens,_by_italian_Rafael.jpg')
3
+ #i.attachment(:image, "spec/factories/Plato_and_Aristotle_in_The_School_of_Athens.jpg", "image/jpeg")
4
+ i.image { File.new("#{ROOT_DIR}/spec/factories/Plato_and_Aristotle_in_The_School_of_Athens,_by_italian_Rafael.jpg") }
5
+ i.image_original_url 'http://upload.wikimedia.org/wikipedia/commons/f/ff/Plato_and_Aristotle_in_The_School_of_Athens%2C_by_italian_Rafael.jpg'
6
+ i.image_search_term 'school'
7
+ end
@@ -0,0 +1,25 @@
1
+ ROOT_DIR = `pwd`.strip unless defined? ROOT_DIR
2
+ require ROOT_DIR + '/spec/spec_helper'
3
+
4
+ describe SexItUp::SexItUpHelper do
5
+ include SexItUp::SexItUpHelper
6
+
7
+ before(:all) do
8
+ # Start with a clean slate
9
+ SexItUp::SexItUpImage.delete_all
10
+ @image = Factory.build(:sex_it_up_image)
11
+ end
12
+
13
+ describe "sexy_image" do
14
+ it "should source a random image for the search term and size it accordingly" do
15
+ sexy_image('school', {:width => 50, :height => 50}).should =~ /.jpg/i
16
+ sexy_image('school', {:width => 50, :height => 50}).should =~ /s_50x50/
17
+ end
18
+
19
+ it "should generate an image tag for the Rafael.jpg image " do
20
+ sexy_image(@image, {:width => 50, :height => 50}).should =~ /s_50x50\/Plato_and_Aristotle_in_The_School_of_Athens,_by_italian_Rafael.jpg/
21
+ end
22
+
23
+ end
24
+
25
+ end
@@ -0,0 +1,13 @@
1
+ module Paperclip
2
+ module Interpolations
3
+ # Returns the Rails.root constant.
4
+ def rails_root attachment, style_name
5
+ ROOT_DIR
6
+ end
7
+
8
+ # Returns the Rails.env constant.
9
+ def rails_env attachment, style_name
10
+ 'test'
11
+ end
12
+ end
13
+ end
data/spec/schema.rb ADDED
@@ -0,0 +1,12 @@
1
+ ActiveRecord::Schema.define :version => 0 do
2
+ create_table "sex_it_up_images" do |t|
3
+ t.string :image_search_term
4
+ t.string :image_original_url
5
+ t.string :image_url
6
+ t.string :image_file_name
7
+ t.string :image_content_type
8
+ t.integer :image_file_size
9
+ t.datetime :image_updated_at
10
+ end
11
+
12
+ end
@@ -0,0 +1,31 @@
1
+ #require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+ ROOT_DIR = `pwd`.strip unless defined? ROOT_DIR
3
+ require ROOT_DIR + '/spec/spec_helper'
4
+
5
+ describe SexItUp::SexItUpImage, '#find_all' do
6
+ before(:all) do
7
+ # Start with a clean slate
8
+ SexItUp::SexItUpImage.delete_all
9
+ end
10
+
11
+ it "shouldn't have any images cached" do
12
+ SexItUp::SexItUpImage.all.should have(0).things
13
+ end
14
+
15
+ it "should cache at least one image for the search term 'school'" do
16
+ SexItUp::SexItUpImage.find_all('school')
17
+ SexItUp::SexItUpImage.all.should have_at_least(1).things
18
+ end
19
+
20
+ it "should find the 'Plato and Aristotle in The School of Athens' image'" do
21
+ @image = Factory.build(:sex_it_up_image)
22
+
23
+ url = 'http://upload.wikimedia.org/wikipedia/commons/f/ff/Plato_and_Aristotle_in_The_School_of_Athens%2C_by_italian_Rafael.jpg'
24
+ SexItUp::SexItUpImage.find_by_image_original_url(url).image_original_url.should == @image.image_original_url
25
+ end
26
+
27
+ it "should return an empty series of SexItUpImage objects" do
28
+ SexItUp::SexItUpImage.find_all('blah123xyz').should == []
29
+ end
30
+
31
+ end
@@ -0,0 +1,45 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ require 'rspec'
5
+ require 'sex_it_up'
6
+ require 'factory_girl'
7
+
8
+ require 'active_record'
9
+ require 'active_support'
10
+ require 'logger'
11
+
12
+ require 'initializers/paperclip'
13
+
14
+ gem 'sqlite3-ruby'
15
+
16
+ DB = '/tmp/sex_it_up.sqlite'
17
+
18
+ # Delete the db if exists so we have a clean slate to run against.
19
+ File.delete(DB) rescue nil
20
+
21
+ # Delete the paperclip cache directory
22
+ FileUtils.rm_rf('public')
23
+
24
+ ActiveRecord::Base.logger = Logger.new('/tmp/sex_it_up.log')
25
+ ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => DB)
26
+
27
+ ActiveRecord::Schema.define(:version => 1) do
28
+ ActiveRecord::Migration.verbose = false
29
+ load(File.dirname(__FILE__) + '/schema.rb')
30
+ end
31
+
32
+ # Requires supporting files with custom matchers and macros, etc,
33
+ # in ./support/ and its subdirectories.
34
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
35
+ Dir["#{File.dirname(__FILE__)}/helpers/**/*.rb"].each {|f| require f}
36
+
37
+ # Factories aren't autodiscovered in non-rails environments so have to
38
+ # explicitly find them.
39
+ Factory.find_definitions
40
+
41
+ RSpec.configure do |config|
42
+ config.mock_with :rspec
43
+ end
44
+
45
+
metadata ADDED
@@ -0,0 +1,278 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sex_it_up
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 0
9
+ version: 1.0.0
10
+ platform: ruby
11
+ authors:
12
+ - Jim Jones
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-11-30 00:00:00 -08:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: activerecord
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 3
29
+ - 0
30
+ - 1
31
+ version: 3.0.1
32
+ type: :runtime
33
+ prerelease: false
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: actionpack
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 3
44
+ - 0
45
+ - 1
46
+ version: 3.0.1
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: paperclip
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ segments:
58
+ - 2
59
+ - 3
60
+ - 5
61
+ version: 2.3.5
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: mechanize
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ segments:
73
+ - 1
74
+ - 0
75
+ - 0
76
+ version: 1.0.0
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *id004
80
+ - !ruby/object:Gem::Dependency
81
+ name: google-search
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ segments:
88
+ - 1
89
+ - 0
90
+ - 2
91
+ version: 1.0.2
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: *id005
95
+ - !ruby/object:Gem::Dependency
96
+ name: factory_girl
97
+ requirement: &id006 !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - "="
101
+ - !ruby/object:Gem::Version
102
+ segments:
103
+ - 1
104
+ - 3
105
+ - 2
106
+ version: 1.3.2
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: *id006
110
+ - !ruby/object:Gem::Dependency
111
+ name: rspec-rails
112
+ requirement: &id007 !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ segments:
118
+ - 2
119
+ - 1
120
+ - 0
121
+ version: 2.1.0
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: *id007
125
+ - !ruby/object:Gem::Dependency
126
+ name: bundler
127
+ requirement: &id008 !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ~>
131
+ - !ruby/object:Gem::Version
132
+ segments:
133
+ - 1
134
+ - 0
135
+ - 0
136
+ version: 1.0.0
137
+ type: :development
138
+ prerelease: false
139
+ version_requirements: *id008
140
+ - !ruby/object:Gem::Dependency
141
+ name: jeweler
142
+ requirement: &id009 !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ~>
146
+ - !ruby/object:Gem::Version
147
+ segments:
148
+ - 1
149
+ - 5
150
+ - 1
151
+ version: 1.5.1
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: *id009
155
+ - !ruby/object:Gem::Dependency
156
+ name: sqlite3-ruby
157
+ requirement: &id010 !ruby/object:Gem::Requirement
158
+ none: false
159
+ requirements:
160
+ - - ~>
161
+ - !ruby/object:Gem::Version
162
+ segments:
163
+ - 1
164
+ - 3
165
+ - 1
166
+ version: 1.3.1
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: *id010
170
+ - !ruby/object:Gem::Dependency
171
+ name: paperclip
172
+ requirement: &id011 !ruby/object:Gem::Requirement
173
+ none: false
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ segments:
178
+ - 2
179
+ - 3
180
+ - 5
181
+ version: 2.3.5
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: *id011
185
+ - !ruby/object:Gem::Dependency
186
+ name: mechanize
187
+ requirement: &id012 !ruby/object:Gem::Requirement
188
+ none: false
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ segments:
193
+ - 1
194
+ - 0
195
+ - 0
196
+ version: 1.0.0
197
+ type: :development
198
+ prerelease: false
199
+ version_requirements: *id012
200
+ - !ruby/object:Gem::Dependency
201
+ name: google-search
202
+ requirement: &id013 !ruby/object:Gem::Requirement
203
+ none: false
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ segments:
208
+ - 1
209
+ - 0
210
+ - 2
211
+ version: 1.0.2
212
+ type: :development
213
+ prerelease: false
214
+ version_requirements: *id013
215
+ description: SexItUp allows for the easy drop-in of public domain images for site mockups and user avatars.
216
+ email: jjones@aantix.com
217
+ executables: []
218
+
219
+ extensions: []
220
+
221
+ extra_rdoc_files:
222
+ - LICENSE
223
+ - README.rdoc
224
+ files:
225
+ - Rakefile
226
+ - lib/generators/sex_it_up/sex_it_up_generator.rb
227
+ - lib/generators/sex_it_up/templates/sex_it_up_migration.rb
228
+ - lib/sex_it_up.rb
229
+ - lib/tasks/sex_it_up.rb
230
+ - spec/factories/Plato_and_Aristotle_in_The_School_of_Athens,_by_italian_Rafael.jpg
231
+ - spec/factories/sex_it_up_image_factory.rb
232
+ - spec/helpers/sex_it_up_helper.rb
233
+ - spec/initializers/paperclip.rb
234
+ - spec/schema.rb
235
+ - spec/sex_it_up_spec.rb
236
+ - spec/spec_helper.rb
237
+ - LICENSE
238
+ - README.rdoc
239
+ has_rdoc: true
240
+ homepage: http://github.com/aantix/sex_it_up
241
+ licenses: []
242
+
243
+ post_install_message:
244
+ rdoc_options: []
245
+
246
+ require_paths:
247
+ - lib
248
+ required_ruby_version: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ">="
252
+ - !ruby/object:Gem::Version
253
+ hash: -267357419563257916
254
+ segments:
255
+ - 0
256
+ version: "0"
257
+ required_rubygems_version: !ruby/object:Gem::Requirement
258
+ none: false
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ segments:
263
+ - 0
264
+ version: "0"
265
+ requirements: []
266
+
267
+ rubyforge_project:
268
+ rubygems_version: 1.3.7
269
+ signing_key:
270
+ specification_version: 3
271
+ summary: Replace your boring place-holder images with beautiful public domain images of history's greatest artwork and sculptures.
272
+ test_files:
273
+ - spec/factories/sex_it_up_image_factory.rb
274
+ - spec/helpers/sex_it_up_helper.rb
275
+ - spec/initializers/paperclip.rb
276
+ - spec/schema.rb
277
+ - spec/sex_it_up_spec.rb
278
+ - spec/spec_helper.rb