edge_rider 0.1.1

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.
Files changed (83) hide show
  1. data/.gitignore +10 -0
  2. data/.rvmrc +2 -0
  3. data/.travis.yml +15 -0
  4. data/README.md +41 -0
  5. data/Rakefile +55 -0
  6. data/edge_rider.gemspec +20 -0
  7. data/lib/edge_rider/collect_column.rb +23 -0
  8. data/lib/edge_rider/collect_ids.rb +53 -0
  9. data/lib/edge_rider/development.rb +27 -0
  10. data/lib/edge_rider/to_id_query.rb +12 -0
  11. data/lib/edge_rider/to_sql.rb +13 -0
  12. data/lib/edge_rider/traverse_association.rb +40 -0
  13. data/lib/edge_rider/util.rb +32 -0
  14. data/lib/edge_rider/version.rb +3 -0
  15. data/lib/edge_rider.rb +10 -0
  16. data/spec/rails-2.3/Gemfile +13 -0
  17. data/spec/rails-2.3/Rakefile +11 -0
  18. data/spec/rails-2.3/app_root/config/boot.rb +130 -0
  19. data/spec/rails-2.3/app_root/config/database.yml +6 -0
  20. data/spec/rails-2.3/app_root/config/environment.rb +16 -0
  21. data/spec/rails-2.3/app_root/config/environments/test.rb +0 -0
  22. data/spec/rails-2.3/app_root/config/initializers/fix_missing_source_file.rb +1 -0
  23. data/spec/rails-2.3/app_root/config/preinitializer.rb +22 -0
  24. data/spec/rails-2.3/app_root/config/routes.rb +15 -0
  25. data/spec/rails-2.3/app_root/log/.gitignore +1 -0
  26. data/spec/rails-2.3/rcov.opts +2 -0
  27. data/spec/rails-2.3/spec/spec_helper.rb +25 -0
  28. data/spec/rails-2.3/spec.opts +4 -0
  29. data/spec/rails-3.0/.rspec +2 -0
  30. data/spec/rails-3.0/Gemfile +12 -0
  31. data/spec/rails-3.0/Rakefile +11 -0
  32. data/spec/rails-3.0/app_root/.gitignore +4 -0
  33. data/spec/rails-3.0/app_root/config/application.rb +33 -0
  34. data/spec/rails-3.0/app_root/config/boot.rb +15 -0
  35. data/spec/rails-3.0/app_root/config/database.yml +6 -0
  36. data/spec/rails-3.0/app_root/config/environment.rb +7 -0
  37. data/spec/rails-3.0/app_root/config/environments/test.rb +37 -0
  38. data/spec/rails-3.0/app_root/config/initializers/backtrace_silencers.rb +9 -0
  39. data/spec/rails-3.0/app_root/config/initializers/inflections.rb +12 -0
  40. data/spec/rails-3.0/app_root/config/initializers/mime_types.rb +7 -0
  41. data/spec/rails-3.0/app_root/config/initializers/secret_token.rb +9 -0
  42. data/spec/rails-3.0/app_root/config/initializers/session_store.rb +10 -0
  43. data/spec/rails-3.0/app_root/config/routes.rb +5 -0
  44. data/spec/rails-3.0/app_root/lib/tasks/.gitkeep +0 -0
  45. data/spec/rails-3.0/app_root/log/.gitkeep +0 -0
  46. data/spec/rails-3.0/app_root/script/rails +6 -0
  47. data/spec/rails-3.0/rcov.opts +2 -0
  48. data/spec/rails-3.0/spec/spec_helper.rb +23 -0
  49. data/spec/rails-3.2/.rspec +2 -0
  50. data/spec/rails-3.2/Gemfile +13 -0
  51. data/spec/rails-3.2/Rakefile +11 -0
  52. data/spec/rails-3.2/app_root/.gitignore +4 -0
  53. data/spec/rails-3.2/app_root/config/application.rb +33 -0
  54. data/spec/rails-3.2/app_root/config/boot.rb +15 -0
  55. data/spec/rails-3.2/app_root/config/database.yml +6 -0
  56. data/spec/rails-3.2/app_root/config/environment.rb +7 -0
  57. data/spec/rails-3.2/app_root/config/environments/test.rb +37 -0
  58. data/spec/rails-3.2/app_root/config/initializers/backtrace_silencers.rb +9 -0
  59. data/spec/rails-3.2/app_root/config/initializers/inflections.rb +12 -0
  60. data/spec/rails-3.2/app_root/config/initializers/mime_types.rb +7 -0
  61. data/spec/rails-3.2/app_root/config/initializers/secret_token.rb +9 -0
  62. data/spec/rails-3.2/app_root/config/initializers/session_store.rb +10 -0
  63. data/spec/rails-3.2/app_root/config/routes.rb +5 -0
  64. data/spec/rails-3.2/app_root/log/.gitignore +1 -0
  65. data/spec/rails-3.2/rcov.opts +2 -0
  66. data/spec/rails-3.2/spec/spec_helper.rb +25 -0
  67. data/spec/shared/app_root/app/controllers/application_controller.rb +5 -0
  68. data/spec/shared/app_root/app/models/allow_setting_id_on_create.rb +21 -0
  69. data/spec/shared/app_root/app/models/forum.rb +10 -0
  70. data/spec/shared/app_root/app/models/post.rb +9 -0
  71. data/spec/shared/app_root/app/models/profile.rb +8 -0
  72. data/spec/shared/app_root/app/models/topic.rb +12 -0
  73. data/spec/shared/app_root/app/models/user.rb +12 -0
  74. data/spec/shared/app_root/config/database.sample.yml +6 -0
  75. data/spec/shared/app_root/config/database.travis_ci.yml +6 -0
  76. data/spec/shared/app_root/db/migrate/001_create_test_tables.rb +45 -0
  77. data/spec/shared/spec/edge_rider/collect_column_spec.rb +50 -0
  78. data/spec/shared/spec/edge_rider/collect_ids_spec.rb +73 -0
  79. data/spec/shared/spec/edge_rider/to_id_query_spec.rb +29 -0
  80. data/spec/shared/spec/edge_rider/to_sql_spec.rb +14 -0
  81. data/spec/shared/spec/edge_rider/traverse_association_spec.rb +133 -0
  82. data/spec/shared/spec/edge_rider/util_spec.rb +5 -0
  83. metadata +159 -0
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ doc
2
+ pkg
3
+ *.gem
4
+ .idea
5
+ app_root/log/*
6
+ Gemfile.lock
7
+ spec/shared/app_root/db/*.db
8
+ spec/shared/app_root/config/database.yml
9
+
10
+
data/.rvmrc ADDED
@@ -0,0 +1,2 @@
1
+ rvm 1.8.7
2
+
data/.travis.yml ADDED
@@ -0,0 +1,15 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.8.7"
4
+ - "1.9.3"
5
+ - ree
6
+ services:
7
+ - mysql
8
+ before_script: rake travis_ci:prepare
9
+ script: rake all:bundle all:spec
10
+ notifications:
11
+ email:
12
+ - fail@makandra.de
13
+ branches:
14
+ only:
15
+ - master
data/README.md ADDED
@@ -0,0 +1,41 @@
1
+ Edge Rider [![Build Status](https://secure.travis-ci.org/makandra/edge_rider.png?branch=master)](https://travis-ci.org/makandra/edge_rider)
2
+ ====================================
3
+
4
+ Power tools for Active Record relations (scopes)
5
+ -------------------------------------------------
6
+
7
+ TODO: Write README
8
+
9
+
10
+ Installation
11
+ ------------
12
+
13
+ In your `Gemfile` say:
14
+
15
+ gem 'edge_rider'
16
+
17
+ Now run `bundle install` and restart your server.
18
+
19
+
20
+
21
+ Development
22
+ -----------
23
+
24
+ - Test applications for various Rails versions lives in `spec`.
25
+ - You need to create a MySQL database and put credentials into `spec/shared/app_root/config/database.yml`.
26
+ - You can bundle all test applications by saying `bundle exec rake all:bundle`
27
+ - You can run specs from the project root by saying `bundle exec rake all:spec`.
28
+
29
+ If you would like to contribute:
30
+
31
+ - Fork the repository.
32
+ - Push your changes **with passing specs**.
33
+ - Send me a pull request.
34
+
35
+ I'm very eager to keep this gem leightweight and on topic. If you're unsure whether a change would make it into the gem, [talk to me beforehand](mailto:henning.koch@makandra.de).
36
+
37
+
38
+ Credits
39
+ -------
40
+
41
+ Henning Koch from [makandra](http://makandra.com/)
data/Rakefile ADDED
@@ -0,0 +1,55 @@
1
+ require 'rake'
2
+ require 'bundler/gem_tasks'
3
+
4
+ desc 'Default: Run all specs.'
5
+ task :default => 'all:spec'
6
+
7
+ namespace :travis_ci do
8
+
9
+ desc 'Things to do before Travis CI begins'
10
+ task :prepare do
11
+ Rake::Task['travis_ci:create_database'].invoke &&
12
+ Rake::Task['travis_ci:create_database_yml'].invoke
13
+ end
14
+
15
+ desc 'Creates a test database'
16
+ task :create_database do
17
+ system("mysql -e 'create database edge_rider_test;'")
18
+ end
19
+
20
+ desc 'Creates a database.yml'
21
+ task :create_database_yml do
22
+ config_dir = "spec/shared/app_root/config"
23
+ system("cp #{config_dir}/database.travis_ci.yml #{config_dir}/database.yml")
24
+ end
25
+
26
+ end
27
+
28
+ namespace :all do
29
+
30
+ desc "Run specs on all spec apps"
31
+ task :spec do
32
+ success = true
33
+ for_each_directory_of('spec/**/Rakefile') do |directory|
34
+ env = "SPEC=../../#{ENV['SPEC']} " if ENV['SPEC']
35
+ success &= system("cd #{directory} && #{env} bundle exec rake spec")
36
+ end
37
+ fail "Tests failed" unless success
38
+ end
39
+
40
+ desc "Bundle all spec apps"
41
+ task :bundle do
42
+ for_each_directory_of('spec/**/Gemfile') do |directory|
43
+ system("cd #{directory} && rm -f Gemfile.lock && bundle install")
44
+ end
45
+ end
46
+
47
+ end
48
+
49
+ def for_each_directory_of(path, &block)
50
+ Dir[path].sort.each do |rakefile|
51
+ directory = File.dirname(rakefile)
52
+ puts '', "\033[44m#{directory}\033[0m", ''
53
+ block.call(directory)
54
+ end
55
+ end
@@ -0,0 +1,20 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require "edge_rider/version"
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'edge_rider'
6
+ s.version = EdgeRider::VERSION
7
+ s.authors = ["Henning Koch"]
8
+ s.email = 'henning.koch@makandra.de'
9
+ s.homepage = 'https://github.com/makandra/edge_rider'
10
+ s.summary = 'Power tools for ActiveRecord relations (scopes)'
11
+ s.description = s.summary
12
+
13
+ s.files = `git ls-files`.split("\n")
14
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
+ s.require_paths = ["lib"]
17
+
18
+ s.add_dependency('rails')
19
+
20
+ end
@@ -0,0 +1,23 @@
1
+ module EdgeRider
2
+ module CollectColumn
3
+
4
+ def collect_column(column_name, find_options = {})
5
+ distinct = find_options.delete(:distinct)
6
+ qualified_column_name = EdgeRider::Util.qualify_column_name(self, column_name)
7
+ if respond_to?(:pluck) # Rails 3.2+
8
+ scope = scoped({})
9
+ scope = scope.uniq if distinct
10
+ scope.pluck(qualified_column_name)
11
+ else # Rails 2
12
+ select = distinct ? "DISTINCT #{qualified_column_name}" : qualified_column_name
13
+ query = scoped(find_options.merge(:select => select)).to_sql
14
+ raw_values = connection.select_values(query)
15
+ column = columns_hash[column_name.to_s] or raise "Could not retrieve column information: #{column_name}"
16
+ raw_values.collect { |value| column.type_cast(value) }
17
+ end
18
+ end
19
+
20
+ ActiveRecord::Base.extend(self)
21
+
22
+ end
23
+ end
@@ -0,0 +1,53 @@
1
+ module EdgeRider
2
+ module CollectIds
3
+
4
+ class Uncollectable < StandardError; end
5
+
6
+ module Array
7
+
8
+ def collect_ids
9
+ collect do |obj|
10
+ case obj
11
+ when Fixnum then obj
12
+ when ActiveRecord::Base then obj.id
13
+ else raise Uncollectable, "Cannot collect an id from #{obj.inspect}"
14
+ end
15
+ end
16
+ end
17
+
18
+ end
19
+
20
+ ::Array.send(:include, Array)
21
+
22
+ module ActiveRecordValue
23
+
24
+ def collect_ids
25
+ [id]
26
+ end
27
+
28
+ end
29
+
30
+ ::ActiveRecord::Base.send(:include, ActiveRecordValue)
31
+
32
+ module ActiveRecordScope
33
+
34
+ def collect_ids
35
+ collect_column(:id)
36
+ end
37
+
38
+ end
39
+
40
+ ::ActiveRecord::Base.send(:extend, ActiveRecordScope)
41
+
42
+ module Fixnum
43
+
44
+ def collect_ids
45
+ [self]
46
+ end
47
+
48
+ end
49
+
50
+ ::Fixnum.send(:include, Fixnum)
51
+
52
+ end
53
+ end
@@ -0,0 +1,27 @@
1
+ module EdgeRider
2
+ module Development
3
+ extend self
4
+
5
+ def drop_all_tables
6
+ connection = ::ActiveRecord::Base.connection
7
+ connection.tables.each do |table|
8
+ connection.drop_table table
9
+ end
10
+ end
11
+
12
+ def migrate_test_database
13
+ print "\033[30m" # dark gray text
14
+ drop_all_tables
15
+ ::ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate")
16
+ print "\033[0m"
17
+ end
18
+
19
+ def selects_star_with_conditions_pattern(table, conditions)
20
+ table = Regexp.quote(table)
21
+ conditions = Regexp.quote(conditions) unless conditions.is_a?(Regexp)
22
+ /\ASELECT (`#{table}`\.)?\* FROM `#{table}`\s+WHERE \(?#{conditions}\)?\s*\z/
23
+ end
24
+
25
+ end
26
+ end
27
+
@@ -0,0 +1,12 @@
1
+ module EdgeRider
2
+ module ToIdQuery
3
+
4
+ def to_id_query
5
+ ids = collect_ids
6
+ EdgeRider::Util.exclusive_query(self, :id => ids)
7
+ end
8
+
9
+ ActiveRecord::Base.send(:extend, self)
10
+
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ module EdgeRider
2
+ module ToSql
3
+
4
+ def to_sql
5
+ construct_finder_sql({})
6
+ end
7
+
8
+ if Rails.version < '3'
9
+ ActiveRecord::Base.extend(self)
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,40 @@
1
+ module EdgeRider
2
+ module TraverseAssociation
3
+
4
+ class UnsupportedAssociation < StandardError; end
5
+ class UnknownAssociation < StandardError; end
6
+
7
+ def traverse_association(*associations)
8
+
9
+ scope = scoped({})
10
+
11
+ associations.each_with_index do |association, index|
12
+
13
+ reflection = scope.reflect_on_association(association) or raise UnknownAssociation, "Could not find association: #{self.name}##{association}"
14
+ foreign_key = reflection.respond_to?(:foreign_key) ? reflection.foreign_key : reflection.primary_key_name
15
+
16
+ raise NotImplementedError if reflection.options[:conditions].present?
17
+
18
+ if reflection.macro == :belongs_to
19
+ ids = scope.collect_column(foreign_key, :distinct => true)
20
+ scope = EdgeRider::Util.exclusive_query(reflection.klass, :id => ids)
21
+ elsif reflection.macro == :has_many || reflection.macro == :has_one
22
+ if reflection.through_reflection
23
+ scope = scope.traverse_association(reflection.through_reflection.name, reflection.source_reflection.name)
24
+ else
25
+ ids = scope.collect_ids
26
+ scope = EdgeRider::Util.exclusive_query(reflection.klass, foreign_key => ids)
27
+ end
28
+ else
29
+ raise UnsupportedAssociation, "Unsupport association type: #{reflection.macro}"
30
+ end
31
+ end
32
+
33
+ scope
34
+
35
+ end
36
+
37
+ ActiveRecord::Base.extend(self)
38
+
39
+ end
40
+ end
@@ -0,0 +1,32 @@
1
+ # encoding: utf-8
2
+
3
+ module EdgeRider
4
+ module Util
5
+ extend self
6
+
7
+ def qualify_column_name(model, column_name)
8
+ column_name = column_name.to_s
9
+ unless column_name.include?('.')
10
+ quoted_table_name = model.connection.quote_table_name(model.table_name)
11
+ quoted_column_name = model.connection.quote_column_name(column_name)
12
+ column_name = "#{quoted_table_name}.#{quoted_column_name}"
13
+ end
14
+ column_name
15
+ end
16
+
17
+ def exclusive_query(model, conditions)
18
+ if Rails.version < '3'
19
+ model.send(:with_exclusive_scope) do
20
+ model.scoped(:conditions => conditions)
21
+ end
22
+ else
23
+ model.unscoped.where(conditions)
24
+ end
25
+ end
26
+
27
+ def scope?(object)
28
+ object.respond_to?(:scoped)
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,3 @@
1
+ module EdgeRider
2
+ VERSION = '0.1.1'
3
+ end
data/lib/edge_rider.rb ADDED
@@ -0,0 +1,10 @@
1
+ # encoding: utf-8
2
+
3
+ require 'edge_rider/version'
4
+ require 'edge_rider/util'
5
+
6
+ require 'edge_rider/collect_column'
7
+ require 'edge_rider/collect_ids'
8
+ require 'edge_rider/traverse_association'
9
+ require 'edge_rider/to_id_query'
10
+ require 'edge_rider/to_sql'
@@ -0,0 +1,13 @@
1
+ source :rubygems
2
+
3
+ gem 'rails', '~>2.3'
4
+ gem 'rspec', '~>1.3'
5
+ gem 'rspec-rails', '~>1.3'
6
+ gem 'mysql2', '~>0.2.0'
7
+ gem 'ruby-debug', :platforms => :ruby_18
8
+ gem 'test-unit', '~>1.2', :platforms => :ruby_19
9
+ gem 'database_cleaner'
10
+ gem 'andand'
11
+ gem 'has_defaults'
12
+
13
+ gem 'edge_rider', :path => '../..'
@@ -0,0 +1,11 @@
1
+ require 'rake'
2
+ require 'spec/rake/spectask'
3
+
4
+ desc 'Default: Run all specs for a specific rails version.'
5
+ task :default => :spec
6
+
7
+ desc "Run all specs for a specific rails version"
8
+ Spec::Rake::SpecTask.new() do |t|
9
+ t.spec_opts = ['--options', "\"spec.opts\""]
10
+ t.spec_files = defined?(SPEC) ? SPEC : FileList['**/*_spec.rb', '../shared/spec/**/*_spec.rb']
11
+ end
@@ -0,0 +1,130 @@
1
+ # encoding: utf-8
2
+
3
+ # Allow customization of the rails framework path
4
+ RAILS_FRAMEWORK_ROOT = (ENV['RAILS_FRAMEWORK_ROOT'] || "#{File.dirname(__FILE__)}/../../../../../../vendor/rails") unless defined?(RAILS_FRAMEWORK_ROOT)
5
+
6
+ # Don't change this file!
7
+ # Configure your app in config/environment.rb and config/environments/*.rb
8
+
9
+ RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
10
+
11
+ module Rails
12
+ class << self
13
+ def boot!
14
+ unless booted?
15
+ preinitialize
16
+ pick_boot.run
17
+ end
18
+ end
19
+
20
+ def booted?
21
+ defined? Rails::Initializer
22
+ end
23
+
24
+ def pick_boot
25
+ (vendor_rails? ? VendorBoot : GemBoot).new
26
+ end
27
+
28
+ def vendor_rails?
29
+ File.exist?(RAILS_FRAMEWORK_ROOT)
30
+ end
31
+
32
+ def preinitialize
33
+ load(preinitializer_path) if File.exist?(preinitializer_path)
34
+ end
35
+
36
+ def preinitializer_path
37
+ "#{RAILS_ROOT}/config/preinitializer.rb"
38
+ end
39
+ end
40
+
41
+ class Boot
42
+ def run
43
+ load_initializer
44
+ Rails::Initializer.run(:set_load_path)
45
+ end
46
+ end
47
+
48
+ class VendorBoot < Boot
49
+ def load_initializer
50
+ require "#{RAILS_FRAMEWORK_ROOT}/railties/lib/initializer"
51
+ Rails::Initializer.run(:install_gem_spec_stubs)
52
+ end
53
+ end
54
+
55
+ class GemBoot < Boot
56
+ def load_initializer
57
+ self.class.load_rubygems
58
+ load_rails_gem
59
+ require 'initializer'
60
+ end
61
+
62
+ def load_rails_gem
63
+ if version = self.class.gem_version
64
+ gem 'rails', version
65
+ else
66
+ gem 'rails'
67
+ end
68
+ rescue Gem::LoadError => load_error
69
+ $stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
70
+ exit 1
71
+ end
72
+
73
+ class << self
74
+ def rubygems_version
75
+ Gem::RubyGemsVersion rescue nil
76
+ end
77
+
78
+ def gem_version
79
+ if defined? RAILS_GEM_VERSION
80
+ RAILS_GEM_VERSION
81
+ elsif ENV.include?('RAILS_GEM_VERSION')
82
+ ENV['RAILS_GEM_VERSION']
83
+ else
84
+ parse_gem_version(read_environment_rb)
85
+ end
86
+ end
87
+
88
+ def load_rubygems
89
+ require 'rubygems'
90
+ min_version = '1.1.1'
91
+ unless rubygems_version >= min_version
92
+ $stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
93
+ exit 1
94
+ end
95
+
96
+ rescue LoadError
97
+ $stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org)
98
+ exit 1
99
+ end
100
+
101
+ def parse_gem_version(text)
102
+ $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
103
+ end
104
+
105
+ private
106
+ def read_environment_rb
107
+ environment_rb = "#{RAILS_ROOT}/config/environment.rb"
108
+ environment_rb = "#{HELPER_RAILS_ROOT}/config/environment.rb" unless File.exists?(environment_rb)
109
+ File.read(environment_rb)
110
+ end
111
+ end
112
+ end
113
+ end
114
+
115
+ class Rails::Boot
116
+ def run
117
+ load_initializer
118
+
119
+ Rails::Initializer.class_eval do
120
+ def load_gems
121
+ @bundler_loaded ||= Bundler.require :default, Rails.env
122
+ end
123
+ end
124
+
125
+ Rails::Initializer.run(:set_load_path)
126
+ end
127
+ end
128
+
129
+ # All that for this:
130
+ Rails.boot!
@@ -0,0 +1,6 @@
1
+ test:
2
+ adapter: mysql2
3
+ host: localhost
4
+ username: root
5
+ password: junior
6
+ database: edge_rider_test
@@ -0,0 +1,16 @@
1
+ # encoding: utf-8
2
+
3
+ require File.join(File.dirname(__FILE__), 'boot')
4
+
5
+ Rails::Initializer.run do |config|
6
+ config.cache_classes = false
7
+ config.whiny_nils = true
8
+ config.action_controller.session = { :key => "_myapp_session", :secret => "gwirofjweroijger8924rt2zfwehfuiwehb1378rifowenfoqwphf23" }
9
+ config.plugin_locators.unshift(
10
+ Class.new(Rails::Plugin::Locator) do
11
+ def plugins
12
+ [Rails::Plugin.new(File.expand_path('.'))]
13
+ end
14
+ end
15
+ ) unless defined?(PluginTestHelper::PluginLocator)
16
+ end
@@ -0,0 +1 @@
1
+ MissingSourceFile::REGEXPS.push([/^cannot load such file -- (.+)$/i, 1])
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+
3
+ begin
4
+ require "rubygems"
5
+ require "bundler"
6
+ rescue LoadError
7
+ raise "Could not load the bundler gem. Install it with `gem install bundler`."
8
+ end
9
+
10
+ if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.24")
11
+ raise RuntimeError, "Your bundler version is too old for Rails 2.3." +
12
+ "Run `gem install bundler` to upgrade."
13
+ end
14
+
15
+ begin
16
+ # Set up load paths for all bundled gems
17
+ ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)
18
+ Bundler.setup
19
+ rescue Bundler::GemNotFound
20
+ raise RuntimeError, "Bundler couldn't find some gems." +
21
+ "Did you run `bundle install`?"
22
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ ActionController::Routing::Routes.draw do |map|
4
+
5
+ map.resource :dashboard, :member => { :error => :post }
6
+
7
+ map.resources :songs
8
+
9
+ map.resources :users
10
+
11
+ map.resources :risks
12
+
13
+ map.resources :cakes, :member => { :custom_action => :get }
14
+
15
+ end
@@ -0,0 +1 @@
1
+ *.log
@@ -0,0 +1,2 @@
1
+ --exclude "spec/*,gems/*"
2
+ --rails
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+
3
+ $: << File.join(File.dirname(__FILE__), "/../../lib" )
4
+
5
+ ENV['RAILS_ENV'] = 'test'
6
+
7
+ # Load the Rails environment and testing framework
8
+ require "#{File.dirname(__FILE__)}/../app_root/config/environment"
9
+ require 'spec/rails'
10
+ require 'edge_rider/development'
11
+ DatabaseCleaner.strategy = :truncation
12
+
13
+ # Requires supporting files with custom matchers and macros, etc in ./support/ and its subdirectories.
14
+ Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
15
+
16
+ # Run the migrations
17
+ EdgeRider::Development.migrate_test_database
18
+
19
+ Spec::Runner.configure do |config|
20
+ config.use_transactional_fixtures = false
21
+ config.use_instantiated_fixtures = false
22
+ config.before(:each) do
23
+ DatabaseCleaner.clean
24
+ end
25
+ end
@@ -0,0 +1,4 @@
1
+ --colour
2
+ --format progress
3
+ --loadby mtime
4
+ --reverse
@@ -0,0 +1,2 @@
1
+ --colour
2
+ --format progress
@@ -0,0 +1,12 @@
1
+ source :rubygems
2
+
3
+ gem 'rails', '~>3.0.17'
4
+ gem 'rspec'
5
+ gem 'rspec-rails'
6
+ gem 'mysql2', '~>0.2.0'
7
+ gem 'ruby-debug', :platforms => :ruby_18
8
+ gem 'database_cleaner'
9
+ gem 'andand'
10
+ gem 'has_defaults'
11
+
12
+ gem 'edge_rider', :path => '../..'
@@ -0,0 +1,11 @@
1
+ require 'rake'
2
+ require 'rspec/core/rake_task'
3
+
4
+ desc 'Default: Run all specs for a specific rails version.'
5
+ task :default => :spec
6
+
7
+ desc "Run all specs for a specific rails version"
8
+ RSpec::Core::RakeTask.new(:spec) do |t|
9
+ t.pattern = defined?(SPEC) ? SPEC : ['**/*_spec.rb', '../shared/spec/**/*_spec.rb']
10
+ t.verbose = false
11
+ end
@@ -0,0 +1,4 @@
1
+ .bundle
2
+ db/*.sqlite3
3
+ log/*.log
4
+ tmp/**/*