pose 1.3.4 → 2.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.
Files changed (76) hide show
  1. data/README.md +11 -0
  2. data/Rakefile +4 -2
  3. data/app/models/pose/assignment.rb +34 -0
  4. data/app/models/pose/word.rb +24 -0
  5. data/db/migrate/20130308144915_pose_install.rb +18 -0
  6. data/lib/generators/pose/remove/templates/remove_migration.rb +3 -5
  7. data/lib/generators/pose/upgrade/templates/upgrade_migration.rb +9 -0
  8. data/lib/generators/pose/upgrade/upgrade_generator.rb +35 -0
  9. data/lib/pose/activerecord_base_additions.rb +5 -2
  10. data/lib/pose/engine.rb +5 -0
  11. data/lib/pose/internal_helpers.rb +13 -7
  12. data/lib/pose/{model_additions.rb → model_class_additions.rb} +8 -8
  13. data/lib/pose/railtie.rb +1 -2
  14. data/lib/pose/static_api.rb +5 -6
  15. data/lib/pose/version.rb +1 -1
  16. data/lib/pose.rb +5 -7
  17. data/lib/tasks/pose_tasks.rake +27 -29
  18. data/spec/dummy/Rakefile +7 -0
  19. data/spec/{support/models.rb → dummy/app/models/posable_one.rb} +1 -4
  20. data/spec/dummy/app/models/posable_two.rb +5 -0
  21. data/spec/dummy/config/application.rb +59 -0
  22. data/spec/dummy/config/boot.rb +10 -0
  23. data/spec/dummy/config/database.yml +25 -0
  24. data/spec/dummy/config/environment.rb +5 -0
  25. data/spec/dummy/config/environments/development.rb +37 -0
  26. data/spec/dummy/config/environments/production.rb +67 -0
  27. data/spec/dummy/config/environments/test.rb +37 -0
  28. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  29. data/spec/dummy/config/initializers/inflections.rb +15 -0
  30. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  31. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  32. data/spec/dummy/config/initializers/session_store.rb +8 -0
  33. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  34. data/spec/dummy/config/locales/en.yml +5 -0
  35. data/spec/dummy/config/routes.rb +2 -0
  36. data/spec/dummy/config.ru +4 -0
  37. data/spec/dummy/db/migrate/20130308054001_create_posable_one.rb +8 -0
  38. data/spec/dummy/db/migrate/20130308054142_create_posable_two.rb +9 -0
  39. data/spec/dummy/db/schema.rb +41 -0
  40. data/spec/dummy/script/rails +6 -0
  41. data/spec/factories/assignments.rb +8 -0
  42. data/spec/factories/posable_one.rb +5 -0
  43. data/spec/factories/words.rb +7 -0
  44. data/spec/internal_helpers_spec.rb +40 -42
  45. data/spec/models/assignment_spec.rb +46 -0
  46. data/spec/models/word_spec.rb +42 -0
  47. data/spec/pose_api_spec.rb +198 -196
  48. data/spec/spec_helper.rb +21 -77
  49. data/spec/support/matchers.rb +0 -1
  50. metadata +83 -102
  51. data/doc/Pose/InstanceMethods.html +0 -341
  52. data/doc/Pose.html +0 -774
  53. data/doc/PoseAssignment.html +0 -125
  54. data/doc/PoseGenerator.html +0 -255
  55. data/doc/PoseMigrations.html +0 -261
  56. data/doc/PoseWord.html +0 -125
  57. data/doc/_index.html +0 -134
  58. data/doc/class_list.html +0 -47
  59. data/doc/css/common.css +0 -1
  60. data/doc/css/full_list.css +0 -55
  61. data/doc/css/style.css +0 -322
  62. data/doc/file_list.html +0 -46
  63. data/doc/frames.html +0 -13
  64. data/doc/index.html +0 -134
  65. data/doc/js/app.js +0 -205
  66. data/doc/js/full_list.js +0 -167
  67. data/doc/js/jquery.js +0 -16
  68. data/doc/method_list.html +0 -150
  69. data/doc/top-level-namespace.html +0 -172
  70. data/lib/generators/pose/install/install_generator.rb +0 -56
  71. data/lib/generators/pose/install/templates/install_migration.rb +0 -24
  72. data/lib/pose/models/pose_assignment.rb +0 -31
  73. data/lib/pose/models/pose_word.rb +0 -28
  74. data/spec/factories.rb +0 -15
  75. data/spec/pose_assignment_spec.rb +0 -45
  76. data/spec/pose_word_spec.rb +0 -26
data/README.md CHANGED
@@ -70,6 +70,17 @@ To index all entries of `MyClass`, run `rake pose:reindex_all[MyClass]` on the c
70
70
  At this point, you are all set up. Let's perform a search!
71
71
 
72
72
 
73
+ ## Upgrading from version 1.x
74
+
75
+ Version 2 is a proper Rails engine, and comes with a slightly different database table schema.
76
+ Upgrading is as simple as
77
+
78
+ ```bash
79
+ $ rails generate pose:upgrade
80
+ $ rake db:migrate
81
+ ```
82
+
83
+
73
84
  ## Searching
74
85
 
75
86
  To search, simply call Pose's `search` method, and tell it the search query as well as in which classes it should search.
data/Rakefile CHANGED
@@ -1,14 +1,16 @@
1
1
  #!/usr/bin/env rake
2
- require 'rake/dsl_definition'
3
2
  begin
4
3
  require 'bundler/setup'
5
4
  rescue LoadError
6
5
  puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
7
6
  end
8
- require 'rspec/core/rake_task'
7
+
8
+ APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
9
+ load 'rails/tasks/engine.rake'
9
10
 
10
11
  Bundler::GemHelper.install_tasks
11
12
 
12
13
  # RSpec tasks.
14
+ require 'rspec/core/rake_task'
13
15
  RSpec::Core::RakeTask.new :spec
14
16
  task :default => :spec
@@ -0,0 +1,34 @@
1
+ # Assigns searchable objects to words in the search index.
2
+ module Pose
3
+ class Assignment < ActiveRecord::Base
4
+ attr_accessible :word, :posable
5
+
6
+ belongs_to :word, class_name: 'Pose::Word'
7
+ belongs_to :posable, polymorphic: true
8
+
9
+ # Removes all Assignments for the given class.
10
+ def self.delete_class_index clazz
11
+ Assignment.delete_all(posable_type: clazz.name)
12
+ end
13
+
14
+ # Removes all Assignments that aren't used anymore.
15
+ def self.cleanup_orphaned_pose_assignments progress_bar = nil
16
+ Assignment.find_each(include: [:posable, :word], batch_size: 5000) do |assignment|
17
+ progress_bar.increment if progress_bar
18
+
19
+ # Delete the assignment if the posable object no longer exists.
20
+ if assignment.posable.nil?
21
+ puts "deleting assignment '#{assignment.id}' because the posable object no longer exists."
22
+ assignment.delete
23
+ next
24
+ end
25
+
26
+ # Delete the assignment if the Pose::Word for it no longer exists.
27
+ if assignment.word.nil?
28
+ puts "deleting assignment '#{assignment.id}' because its word no longer exists."
29
+ assignment.delete
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,24 @@
1
+ # A single word in the search index.
2
+ module Pose
3
+ class Word < ActiveRecord::Base
4
+ attr_accessible :text
5
+
6
+ has_many :assignments, class_name: 'Pose::Assignment', dependent: :destroy
7
+
8
+ def self.remove_unused_words progress_bar = nil
9
+ if Helpers.is_sql_database?
10
+ # SQL database --> use an optimized query.
11
+ Word.delete_all(id: Word.select("pose_words.id").
12
+ joins("LEFT OUTER JOIN pose_assignments ON pose_assignments.word_id = pose_words.id").
13
+ group("pose_words.id").
14
+ having("COUNT(pose_assignments.id) = 0"))
15
+ else
16
+ # Unknown database --> use the standard Rails API.
17
+ Word.select(:id).find_each(include: [:assignments], batch_size: 100) do |word|
18
+ word.delete if word.assignments.size == 0
19
+ progress_bar.increment if progress_bar
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,18 @@
1
+ class PoseInstall < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table "pose_assignments" do |t|
5
+ t.integer "word_id", null: false
6
+ t.integer "posable_id", null: false
7
+ t.string "posable_type", limit: 60, null: false
8
+ end
9
+ add_index "pose_assignments", :word_id
10
+ add_index "pose_assignments", :posable_id
11
+
12
+ create_table "pose_words" do |t|
13
+ t.string "text", limit: 80, null: false
14
+ end
15
+ add_index "pose_words", :text
16
+ end
17
+
18
+ end
@@ -7,18 +7,16 @@ class AddPoseTables < ActiveRecord::Migration
7
7
 
8
8
  def self.down
9
9
  create_table "pose_assignments" do |t|
10
- t.integer "pose_word_id", null: false
10
+ t.integer "word_id", null: false
11
11
  t.integer "posable_id", null: false
12
- t.string "posable_type", limit: 40, null: false
12
+ t.string "posable_type", limit: 60, null: false
13
13
  end
14
-
15
- add_index "pose_assignments", :pose_word_id
14
+ add_index "pose_assignments", :word_id
16
15
  add_index "pose_assignments", :posable_id
17
16
 
18
17
  create_table "pose_words" do |t|
19
18
  t.string "text", limit: 80, null: false
20
19
  end
21
-
22
20
  add_index "pose_words", :text
23
21
  end
24
22
  end
@@ -0,0 +1,9 @@
1
+ class PoseUpgrade < ActiveRecord::Migration
2
+
3
+ def change
4
+ change_table 'pose_assignments' do |t|
5
+ t.rename :pose_word_id, :word_id
6
+ end
7
+ end
8
+
9
+ end
@@ -0,0 +1,35 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+
4
+ module Pose
5
+ module Generators
6
+
7
+ class UpgradeGenerator < Rails::Generators::Base
8
+ include Rails::Generators::Migration
9
+ source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
10
+
11
+ def create_migration_file
12
+ say ''
13
+ say ' Creating database migration to upgrade your Pose tables.'
14
+ say ''
15
+ migration_template 'upgrade_migration.rb', 'db/migrate/pose_upgrade.rb'
16
+ say ''
17
+ end
18
+
19
+ def installation_instructions
20
+ say ' All done! You need to do is run db:migrate!'
21
+ say ''
22
+ end
23
+
24
+
25
+ private
26
+
27
+ # Helper method for creating the migration.
28
+ def self.next_migration_number(path)
29
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
30
+ end
31
+ end
32
+
33
+ end
34
+ end
35
+
@@ -2,9 +2,12 @@
2
2
  module Pose
3
3
  module ActiveRecordBaseAdditions
4
4
 
5
+ # Defines the searchable content in ActiveRecord objects.
5
6
  def posify &block
6
- raise "You must provide a block that returns the searchable content to 'posify'." unless block_given?
7
- include Pose::ModelAdditions
7
+ raise "Error while posifying class '#{name}': " \
8
+ "You must provide a block that returns the searchable content to 'posify'." unless block_given?
9
+
10
+ include ModelClassAdditions
8
11
  self.pose_content = block
9
12
  end
10
13
 
@@ -0,0 +1,5 @@
1
+ module Pose
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace Pose
4
+ end
5
+ end
@@ -29,6 +29,12 @@ module Pose
29
29
  end
30
30
 
31
31
 
32
+ def is_sql_database?
33
+ ['ActiveRecord::ConnectionAdapters::PostgreSQLAdapter',
34
+ 'ActiveRecord::ConnectionAdapters::SQLite3Adapter'].include? ActiveRecord::Base.connection.class.name
35
+ end
36
+
37
+
32
38
  # Returns whether the given string is a URL.
33
39
  #
34
40
  # @param [String] word The string to check.
@@ -54,11 +60,11 @@ module Pose
54
60
  # Returns a hash mapping classes to ids for the a single given word.
55
61
  def search_classes_and_ids_for_word word, class_names
56
62
  result = {}.tap { |hash| class_names.each { |class_name| hash[class_name] = [] }}
57
- query = PoseAssignment.joins(:pose_word) \
58
- .select('pose_assignments.posable_id, pose_assignments.posable_type') \
59
- .where('pose_words.text LIKE ?', "#{word}%") \
60
- .where('posable_type IN (?)', class_names)
61
- PoseAssignment.connection.select_all(query.to_sql).each do |pose_assignment|
63
+ query = Pose::Assignment.joins(:word) \
64
+ .select('pose_assignments.posable_id, pose_assignments.posable_type') \
65
+ .where('pose_words.text LIKE ?', "#{word}%") \
66
+ .where('posable_type IN (?)', class_names)
67
+ Pose::Assignment.connection.select_all(query.to_sql).each do |pose_assignment|
62
68
  result[pose_assignment['posable_type']] << pose_assignment['posable_id'].to_i
63
69
  end
64
70
  result
@@ -73,7 +79,7 @@ module Pose
73
79
 
74
80
  # Returns the search terms that are contained in the given query.
75
81
  def query_terms query
76
- query.split(' ').map{|query_word| Pose::Helpers.root_word query_word}.flatten.uniq
82
+ query.split(' ').map{|query_word| Helpers.root_word query_word}.flatten.uniq
77
83
  end
78
84
 
79
85
  # Simplifies the given word to a generic search form.
@@ -88,7 +94,7 @@ module Pose
88
94
  raw_word_copy.gsub! /[()*<>'",;\?\-\=&%#]/, ' '
89
95
  raw_word_copy.gsub! /\s+/, ' '
90
96
  raw_word_copy.split(' ').each do |word|
91
- if Pose::Helpers.is_url?(word)
97
+ if Helpers.is_url?(word)
92
98
  result.concat word.split(/[\.\/\:]/).delete_if(&:blank?)
93
99
  else
94
100
  word.gsub! /[\-\/\._:]/, ' '
@@ -1,11 +1,11 @@
1
- # Additions to posified ActiveRecord models.
1
+ # Additions to posified ActiveRecord classes.
2
2
  module Pose
3
- module ModelAdditions
3
+ module ModelClassAdditions
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  included do
7
- has_many :pose_assignments, as: :posable, dependent: :delete_all
8
- has_many :pose_words, through: :pose_assignments
7
+ has_many :pose_assignments, class_name: 'Pose::Assignment', as: :posable, dependent: :delete_all
8
+ has_many :pose_words, through: :pose_assignments, class_name: 'Pose::Word', source: :word
9
9
 
10
10
  after_save :update_pose_index
11
11
  before_destroy :delete_pose_index
@@ -29,15 +29,15 @@ module Pose
29
29
 
30
30
  # Step 1: get an array of all words for the current object.
31
31
  search_text = instance_eval &(self.class.pose_content)
32
- new_words = Pose::Helpers.query_terms search_text.to_s
32
+ new_words = Helpers.query_terms search_text.to_s
33
33
 
34
34
  # Step 2: Add new words to the search index.
35
- Pose::Helpers.get_words_to_add(self.pose_words, new_words).each do |word_to_add|
36
- self.pose_words << PoseWord.find_or_create_by_text(word_to_add)
35
+ Helpers.get_words_to_add(self.pose_words, new_words).each do |word_to_add|
36
+ self.pose_words << Word.find_or_create_by_text(word_to_add)
37
37
  end
38
38
 
39
39
  # Step 3: Remove now obsolete words from search index.
40
- Pose::Helpers.get_words_to_remove(self.pose_words, new_words).each do |word_to_remove|
40
+ Helpers.get_words_to_remove(self.pose_words, new_words).each do |word_to_remove|
41
41
  self.pose_words.delete word_to_remove
42
42
  end
43
43
  end
data/lib/pose/railtie.rb CHANGED
@@ -7,7 +7,7 @@ module Pose
7
7
  # Add the Pose additions to ActiveRecord::Base once it is loaded.
8
8
  initializer 'Pose.base_additions' do
9
9
  ActiveSupport.on_load :active_record do
10
- extend Pose::ActiveRecordBaseAdditions
10
+ extend ActiveRecordBaseAdditions
11
11
  end
12
12
  end
13
13
 
@@ -16,5 +16,4 @@ module Pose
16
16
  load "tasks/pose_tasks.rake"
17
17
  end
18
18
  end
19
-
20
19
  end
@@ -17,7 +17,7 @@ module Pose
17
17
  # @return [Array<String>]
18
18
  def autocomplete_words query
19
19
  return [] if query.blank?
20
- PoseWord.where('text LIKE ?', "#{Pose::Helpers.root_word(query)[0]}%").map(&:text)
20
+ Word.where('text LIKE ?', "#{Helpers.root_word(query)[0]}%").map(&:text)
21
21
  end
22
22
 
23
23
 
@@ -41,11 +41,11 @@ module Pose
41
41
 
42
42
 
43
43
  # Get the ids of the results.
44
- class_names = Pose::Helpers.make_array(classes).map &:name
44
+ class_names = Helpers.make_array(classes).map &:name
45
45
  result_classes_and_ids = {}
46
- Pose::Helpers.query_terms(query).each do |query_word|
47
- Pose::Helpers.search_classes_and_ids_for_word(query_word, class_names).each do |class_name, ids|
48
- Pose::Helpers.merge_search_result_word_matches result_classes_and_ids, class_name, ids
46
+ Helpers.query_terms(query).each do |query_word|
47
+ Helpers.search_classes_and_ids_for_word(query_word, class_names).each do |class_name, ids|
48
+ Helpers.merge_search_result_word_matches result_classes_and_ids, class_name, ids
49
49
  end
50
50
  end
51
51
 
@@ -92,6 +92,5 @@ module Pose
92
92
  end
93
93
  end
94
94
  end
95
-
96
95
  end
97
96
  end
data/lib/pose/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pose
2
- VERSION = "1.3.4"
2
+ VERSION = "2.0.0"
3
3
  end
data/lib/pose.rb CHANGED
@@ -1,11 +1,9 @@
1
- # Note (KG): Need to include the rake DSL here to prevent deprecation warnings in the Rakefile.
2
- require 'rake'
3
- include Rake::DSL if defined? Rake::DSL
4
-
1
+ require "pose/engine"
5
2
  require 'pose/static_api'
6
3
  require 'pose/internal_helpers'
7
4
  require 'pose/activerecord_base_additions'
8
- require 'pose/model_additions'
5
+ require 'pose/model_class_additions'
9
6
  require 'pose/railtie' if defined? Rails
10
- require 'pose/models/pose_assignment'
11
- require 'pose/models/pose_word'
7
+
8
+ module Pose
9
+ end
@@ -1,40 +1,38 @@
1
1
  include Rake::DSL if defined?(Rake::DSL)
2
2
  require 'ruby-progressbar'
3
- namespace :pose do
4
3
 
5
- namespace :index do
4
+ namespace :pose do
6
5
 
7
- desc "Cleans out unused data from the search index."
8
- task :vacuum => :environment do |t, args|
9
- puts "Cleaning Pose search index ...\n\n"
10
- progress_bar = ProgressBar.create title: ' assignments', total: PoseAssignment.count
11
- PoseAssignment.cleanup_orphaned_pose_assignments progress_bar
12
- progress_bar.finish
6
+ desc "Cleans out unused data from the search index."
7
+ task :vacuum => :environment do |t, args|
8
+ puts "Cleaning Pose search index ...\n\n"
9
+ progress_bar = ProgressBar.create title: ' assignments', total: Pose::Assignment.count
10
+ Pose::Assignment.cleanup_orphaned_pose_assignments progress_bar
11
+ progress_bar.finish
13
12
 
14
- progress_bar = ProgressBar.create title: ' words', total: PoseWord.count
15
- PoseWord.remove_unused_words progress_bar
16
- progress_bar.finish
13
+ progress_bar = ProgressBar.create title: ' words', total: Pose::Word.count
14
+ Pose::Word.remove_unused_words progress_bar
15
+ progress_bar.finish
17
16
 
18
- puts "\nPose search index cleanup complete.\n\n"
19
- end
17
+ puts "\nPose search index cleanup complete.\n\n"
18
+ end
20
19
 
21
- desc "Removes the search index for all instances of the given classes."
22
- task :remove, [:class_name] => :environment do |t, args|
23
- clazz = args.class_name.constantize
24
- PoseAssignment.cleanup_class_index clazz
25
- puts "Search index for class #{clazz.name} deleted.\n\n"
26
- end
20
+ desc "Removes the search index for all instances of the given classes."
21
+ task :remove, [:class_name] => :environment do |t, args|
22
+ clazz = args.class_name.constantize
23
+ Pose::Assignment.delete_class_index clazz
24
+ puts "Search index for class #{clazz.name} deleted.\n\n"
25
+ end
27
26
 
28
- desc "Deletes and recreates the search index for all instances of the given class."
29
- task :reindex_all, [:class_name] => [:environment] do |t, args|
30
- clazz = args.class_name.constantize
31
- progress_bar = ProgressBar.create title: " reindexing", total: clazz.count
32
- clazz.find_each do |instance|
33
- instance.update_pose_words
34
- progress_bar.increment
35
- end
36
- progress_bar.finish
27
+ desc "Deletes and recreates the search index for all instances of the given class."
28
+ task :reindex_all, [:class_name] => [:environment] do |t, args|
29
+ clazz = args.class_name.constantize
30
+ progress_bar = ProgressBar.create title: " reindexing", total: clazz.count
31
+ clazz.find_each do |instance|
32
+ instance.update_pose_words
33
+ progress_bar.increment
37
34
  end
38
-
35
+ progress_bar.finish
39
36
  end
37
+
40
38
  end
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
3
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
4
+
5
+ require File.expand_path('../config/application', __FILE__)
6
+
7
+ Dummy::Application.load_tasks
@@ -1,8 +1,5 @@
1
1
  class PosableOne < ActiveRecord::Base
2
- posify { text }
3
- end
2
+ attr_accessible :text
4
3
 
5
- class PosableTwo < ActiveRecord::Base
6
4
  posify { text }
7
5
  end
8
-
@@ -0,0 +1,5 @@
1
+ class PosableTwo < ActiveRecord::Base
2
+ attr_accessible :text
3
+
4
+ posify { text }
5
+ end
@@ -0,0 +1,59 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails/all'
4
+
5
+ Bundler.require
6
+ require "pose"
7
+
8
+ module Dummy
9
+ class Application < Rails::Application
10
+ # Settings in config/environments/* take precedence over those specified here.
11
+ # Application configuration should go into files in config/initializers
12
+ # -- all .rb files in that directory are automatically loaded.
13
+
14
+ # Custom directories with classes and modules you want to be autoloadable.
15
+ # config.autoload_paths += %W(#{config.root}/extras)
16
+
17
+ # Only load the plugins named here, in the order given (default is alphabetical).
18
+ # :all can be used as a placeholder for all plugins not explicitly named.
19
+ # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
20
+
21
+ # Activate observers that should always be running.
22
+ # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
23
+
24
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
25
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
26
+ # config.time_zone = 'Central Time (US & Canada)'
27
+
28
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
29
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
30
+ # config.i18n.default_locale = :de
31
+
32
+ # Configure the default encoding used in templates for Ruby 1.9.
33
+ config.encoding = "utf-8"
34
+
35
+ # Configure sensitive parameters which will be filtered from the log file.
36
+ config.filter_parameters += [:password]
37
+
38
+ # Enable escaping HTML in JSON.
39
+ config.active_support.escape_html_entities_in_json = true
40
+
41
+ # Use SQL instead of Active Record's schema dumper when creating the database.
42
+ # This is necessary if your schema can't be completely dumped by the schema dumper,
43
+ # like if you have constraints or database-specific column types
44
+ # config.active_record.schema_format = :sql
45
+
46
+ # Enforce whitelist mode for mass assignment.
47
+ # This will create an empty whitelist of attributes available for mass-assignment for all models
48
+ # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
49
+ # parameters by using an attr_accessible or attr_protected declaration.
50
+ config.active_record.whitelist_attributes = true
51
+
52
+ # Enable the asset pipeline
53
+ config.assets.enabled = true
54
+
55
+ # Version of your assets, change this if you want to expire all your assets
56
+ config.assets.version = '1.0'
57
+ end
58
+ end
59
+
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ gemfile = File.expand_path('../../../../Gemfile', __FILE__)
3
+
4
+ if File.exist?(gemfile)
5
+ ENV['BUNDLE_GEMFILE'] = gemfile
6
+ require 'bundler'
7
+ Bundler.setup
8
+ end
9
+
10
+ $:.unshift File.expand_path('../../../../lib', __FILE__)
@@ -0,0 +1,25 @@
1
+ # SQLite version 3.x
2
+ # gem install sqlite3
3
+ #
4
+ # Ensure the SQLite 3 gem is defined in your Gemfile
5
+ # gem 'sqlite3'
6
+ development:
7
+ adapter: sqlite3
8
+ database: db/development.sqlite3
9
+ pool: 5
10
+ timeout: 5000
11
+
12
+ # Warning: The database defined as "test" will be erased and
13
+ # re-generated from your development database when you run "rake".
14
+ # Do not set this db to the same as development or production.
15
+ test:
16
+ adapter: sqlite3
17
+ database: db/test.sqlite3
18
+ pool: 5
19
+ timeout: 5000
20
+
21
+ production:
22
+ adapter: sqlite3
23
+ database: db/production.sqlite3
24
+ pool: 5
25
+ timeout: 5000
@@ -0,0 +1,5 @@
1
+ # Load the rails application
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the rails application
5
+ Dummy::Application.initialize!
@@ -0,0 +1,37 @@
1
+ Dummy::Application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb
3
+
4
+ # In the development environment your application's code is reloaded on
5
+ # every request. This slows down response time but is perfect for development
6
+ # since you don't have to restart the web server when you make code changes.
7
+ config.cache_classes = false
8
+
9
+ # Log error messages when you accidentally call methods on nil.
10
+ config.whiny_nils = true
11
+
12
+ # Show full error reports and disable caching
13
+ config.consider_all_requests_local = true
14
+ config.action_controller.perform_caching = false
15
+
16
+ # Don't care if the mailer can't send
17
+ config.action_mailer.raise_delivery_errors = false
18
+
19
+ # Print deprecation notices to the Rails logger
20
+ config.active_support.deprecation = :log
21
+
22
+ # Only use best-standards-support built into browsers
23
+ config.action_dispatch.best_standards_support = :builtin
24
+
25
+ # Raise exception on mass assignment protection for Active Record models
26
+ config.active_record.mass_assignment_sanitizer = :strict
27
+
28
+ # Log the query plan for queries taking more than this (works
29
+ # with SQLite, MySQL, and PostgreSQL)
30
+ config.active_record.auto_explain_threshold_in_seconds = 0.5
31
+
32
+ # Do not compress assets
33
+ config.assets.compress = false
34
+
35
+ # Expands the lines which load the assets
36
+ config.assets.debug = true
37
+ end