settler 1.2.0 → 1.2.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.
data/README.rdoc CHANGED
@@ -24,7 +24,8 @@ Or install as a plugin if you must. But gems are cooler.
24
24
 
25
25
  * You must create the table used by the Setting model and install an initial configuration file. Simply run this command:
26
26
 
27
- ruby script/generate settler
27
+ rails2: ruby script/generate settler
28
+ rails3: rails g settler
28
29
 
29
30
  * This will create a migration and will add a settler.yml configuration file in your config directory. Now just migrate the database:
30
31
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0
1
+ 1.2.1
@@ -1,6 +1,6 @@
1
1
  class SettlerGenerator < Rails::Generator::NamedBase
2
2
  def initialize(runtime_args, runtime_options = {})
3
- runtime_args << 'add_settings_table' if runtime_args.empty?
3
+ runtime_args << 'create_settings_table' if runtime_args.empty?
4
4
  super
5
5
  end
6
6
 
data/init.rb CHANGED
@@ -1,4 +1 @@
1
- require 'hash_extension'
2
- require 'setting'
3
1
  require 'settler'
4
- require 'type_casters'
@@ -0,0 +1,15 @@
1
+ module ActiveRecord
2
+ class Base
3
+ class << self
4
+ protected
5
+ def current_scoped_methods
6
+ method = scoped_methods.last
7
+ if method.respond_to?(:call)
8
+ unscoped(&method)
9
+ else
10
+ method
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ Description:
2
+ Sets up Settler in your Rails project. It creates a migration and a Settler configuration file.
3
+
4
+ Examples:
5
+ `script/rails generate settler`
@@ -0,0 +1,24 @@
1
+ class SettlerGenerator < Rails::Generators::Base
2
+ include Rails::Generators::Migration
3
+
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ def generate_migration
7
+ migration_template "migration.rb", "db/migrate/create_settings_table.rb"
8
+ end
9
+
10
+ def generate_settler_configruration
11
+ copy_file 'settler.yml', 'config/settler.yml'
12
+ end
13
+
14
+ # Implement the required interface for Rails::Generators::Migration.
15
+ # taken from http://github.com/rails/rails/blob/master/activerecord/lib/generators/active_record.rb
16
+ def self.next_migration_number(dirname)
17
+ if ActiveRecord::Base.timestamped_migrations
18
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
19
+ else
20
+ "%.3d" % (current_migration_number(dirname) + 1)
21
+ end
22
+ end
23
+
24
+ end
@@ -0,0 +1,19 @@
1
+ class CreateSettingsTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :settings, :force => true do |t|
4
+ t.string :key, :null => false
5
+ t.string :alt
6
+ t.text :value
7
+ t.boolean :editable
8
+ t.boolean :deletable
9
+ t.boolean :deleted
10
+ t.timestamps
11
+ end
12
+
13
+ add_index :settings, :key
14
+ end
15
+
16
+ def self.down
17
+ drop_table :settings
18
+ end
19
+ end
@@ -0,0 +1,30 @@
1
+ settings: &settings
2
+ google_analytics_key: &google
3
+ alt: Google analytics key
4
+ value: 'UA-xxxxxx-x'
5
+ editable: true
6
+ deletable: false
7
+ validations:
8
+ presence: true
9
+ search_algorithm:
10
+ alt: Default search engine
11
+ value: 'ferret'
12
+ editable: true
13
+ validations:
14
+ inclusion: [ 'ferret' , 'sphinx' ]
15
+ white_list:
16
+ alt: 'White-listed words'
17
+ value: 'herp, derp'
18
+
19
+ development:
20
+ <<: *settings
21
+ google_analytics_key:
22
+ <<: *google
23
+ alt: Development Google analytics key
24
+ value: 'UA-xxxxxx-1'
25
+
26
+ test:
27
+ <<: *settings
28
+
29
+ production:
30
+ <<: *settings
data/lib/setting.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'type_casters'
2
+ require 'default_scope_patch' if defined?(ActiveRecord::VERSION) && ActiveRecord::VERSION::MAJOR >= 3
2
3
 
3
4
  # The Setting class is an AR model that encapsulates a Settler setting. The key if the setting is the only required attribute.\
4
5
  class Setting < ActiveRecord::Base
@@ -10,11 +11,16 @@ class Setting < ActiveRecord::Base
10
11
 
11
12
  validates_presence_of :key
12
13
  validate :setting_validations
13
- if rails3 then validate(:ensure_editable, :on => :update) else validate_on_update(:ensure_editable) end
14
14
 
15
15
  serialize :value
16
16
 
17
- default_scope :conditions => ['deleted = ? or deleted IS NULL', false]
17
+ if rails3
18
+ validate(:ensure_editable, :on => :update)
19
+ default_scope lambda{ where(['deleted = ? or deleted IS NULL', false]) }
20
+ else
21
+ validate_on_update(:ensure_editable)
22
+ default_scope :conditions => ['deleted = ? or deleted IS NULL', false]
23
+ end
18
24
 
19
25
  scope_method = rails3 ? :scope : :named_scope
20
26
  send scope_method, :editable, :conditions => { :editable => true }
data/lib/settler.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'yaml'
2
2
  require 'erb'
3
3
  require 'hash_extension'
4
+ require 'setting'
5
+ require 'type_casters'
4
6
 
5
7
  # Settler loads and manages application wide settings and provides an interface for retrieving settings. The Settler
6
8
  # object cannot be instantiated; all functionality is available on class level.
data/settler.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{settler}
8
- s.version = "1.2.0"
8
+ s.version = "1.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Reinier de Lange"]
12
- s.date = %q{2010-10-27}
12
+ s.date = %q{2011-02-24}
13
13
  s.description = %q{This gem is a combination of the Squeegy's rails-settings and Binarylogic's settingslogic gem, meaning it reads its configuration from a YAML file, but stores all settings in the database as well for on the fly changes.}
14
14
  s.email = %q{r.j.delange@nedforce.nl}
15
15
  s.extra_rdoc_files = [
@@ -27,6 +27,11 @@ Gem::Specification.new do |s|
27
27
  "generators/settler/templates/migration.rb",
28
28
  "generators/settler/templates/settler.yml",
29
29
  "init.rb",
30
+ "lib/default_scope_patch.rb",
31
+ "lib/generators/settler/USAGE",
32
+ "lib/generators/settler/settler_generator.rb",
33
+ "lib/generators/settler/templates/migration.rb",
34
+ "lib/generators/settler/templates/settler.yml",
30
35
  "lib/hash_extension.rb",
31
36
  "lib/setting.rb",
32
37
  "lib/settler.rb",
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: settler
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
- - 0
10
- version: 1.2.0
9
+ - 1
10
+ version: 1.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Reinier de Lange
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-27 00:00:00 +02:00
18
+ date: 2011-02-24 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -39,6 +39,11 @@ files:
39
39
  - generators/settler/templates/migration.rb
40
40
  - generators/settler/templates/settler.yml
41
41
  - init.rb
42
+ - lib/default_scope_patch.rb
43
+ - lib/generators/settler/USAGE
44
+ - lib/generators/settler/settler_generator.rb
45
+ - lib/generators/settler/templates/migration.rb
46
+ - lib/generators/settler/templates/settler.yml
42
47
  - lib/hash_extension.rb
43
48
  - lib/setting.rb
44
49
  - lib/settler.rb