rails_dictionary 0.0.2 → 0.0.3

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
@@ -5,7 +5,7 @@ In a student application,there will be some static data like diploma kind,school
5
5
  = Usage
6
6
  == Installation
7
7
  Rail3
8
- gem "dictionary",:git => 'git://github.com/raykin/dictionary'
8
+ gem "rails_dictionary",:git => 'git://github.com/raykin/rails_dictionary'
9
9
  or
10
10
  gem 'rails_dictionary'
11
11
 
@@ -72,17 +72,19 @@ Student is a slave model which will be automatically generate a (or a list of)be
72
72
  DictType.all_types => %w[student_city student_school]
73
73
  Dictionary.student_city => [Dictionary.find(5),Dictionary.find(6)]
74
74
  # student_city is a dynamic method which returns a list of dictionary object which dict_type is student_city.Actually Dictionary will has as many dynamic methods as DictType.count and the dynamic method name is DictType.name,so there is another dynamic method which return nil
75
- Dictionary.student_school => nil
75
+ Dictionary.student_school => []
76
76
  Dictionary.student_city(:locale => :en) => [["shanghai",1],["beijing",2]]
77
77
  so you can use these method in form select like
78
- select :student,:city,Dictionary.student_city
79
- this select method has a more clear format which may do some other magic coding
78
+ collection_select :student,:city,Dictionary.student_city,:id,:name_en
79
+ select :student,:city,Dictionary.student_city(params)
80
+ if params contains :locale => :fr,then it would return a list of french name of student city (from name_fr in Dictioanry)
80
81
  Student.find(1).named_city = "beijing"
82
+ Here is an other solution for international translation.
81
83
  Student.find(1).named_city(:zh) = "北京"
82
84
  Student.find(1).named_city(:fr) = "Pékin"
83
- Here is an other solution for international translation.
85
+ Student has 2 belongs_to assocition which named as city_dict and school_dict,the naming convention is columname_dict.
84
86
  Student.find(1).city_dict = Dictionary.find(6)
85
- In these simple example,Student has 2 belongs_to assocition which named as city_dict and school_dict,the naming convention is columname_dict.
87
+
86
88
 
87
89
  = Practical Suggestion
88
90
  If you start a new application and there are more than 10 kinds of static data,you may have a try with the gem.
@@ -92,7 +94,7 @@ However,if you see many static data in an old system and want to refactor it,the
92
94
  The most used debug method would be DictType.all_types and Dictionary.student_city(or other dynamic generate method)
93
95
  When you get some confused with these method,try running
94
96
  rails tmp:clear
95
- cause these methods all return static data,I just add caches to these output for better performance.If you straight forward change db data in db console(not throught Rails) like running
97
+ cause these methods all return static data,I just caches these output for better performance.If you change db data in db console(not through Rails) like running
96
98
  delete from dict_types;
97
99
  The rails cache would not refresh.
98
100
  In short,when you confused with the debug data,try running "rails tmp:clear" first.
data/Rakefile CHANGED
@@ -3,6 +3,6 @@ Bundler::GemHelper.install_tasks
3
3
 
4
4
  desc "Running Test"
5
5
  task :test do
6
- system "ruby -I . test/dictionary_test.rb "
6
+ system "ruby -I . test/rails_dictionary_test.rb "
7
7
  end
8
8
 
@@ -43,6 +43,7 @@ module ActsAsDictSlave
43
43
  end
44
44
 
45
45
  module DynamicInsMethods
46
+ # generate dynamic instance method named_column to slave model
46
47
  def named_dict_value(method_name)
47
48
  belongs_to_name="#{method_name.to_s}_dict".to_sym
48
49
  method_name="named_#{method_name.to_s}"
@@ -1,4 +1,3 @@
1
- require "rails"
2
1
  module ActsAsDictType
3
2
  def self.included(base)
4
3
  base.extend(ClassMethods)
@@ -21,19 +20,21 @@ module ActsAsDictType
21
20
  Rails.cache.fetch("DictType.cached_all") { all }.dup
22
21
  end
23
22
 
23
+ # short method to transfer id to name or name to id
24
24
  def self.revert(arg)
25
- if arg.class == String
26
- DictType.find_by_name(arg).id
27
- elsif arg.class == Fixnum
28
- DictType.find_by_id(arg).name
25
+ if arg.is_a?(String)
26
+ DictType.where(name: arg).try(:first).id
27
+ elsif arg.is_a?(Fixnum)
28
+ DictType.where(id: arg).try(:first).name
29
29
  end
30
30
  end
31
31
 
32
- #TODO: get a more accurate method name
32
+ # TODO: get a more accurate method name
33
+ # parse the name to get which column and model are listed in DictType
33
34
  def self.tab_and_column
34
35
  @tab_and_column={}
35
36
  @all_types=all_types
36
- #TODO: any better way to retrive the class name in app/model ?
37
+ # TODO: any better way to retrive the class name in app/model ?
37
38
  # Here maybe a problem when class like Ckeditor::Asset(.name.underscore => "ckeditor/asset"
38
39
  all_tabs=ActiveRecord::Base.connection.tables.sort.reject! do |t|
39
40
  ['schema_migrations', 'sessions'].include?(t)
@@ -17,7 +17,7 @@ module ActsAsDictionary
17
17
  if DictType.all_types.include? method_id.to_s
18
18
  Rails.cache.fetch("Dictionary.#{method_name}") { Dictionary.joins(:dict_type).where('dict_types.name'=>method_name).all }
19
19
  listed_attr=Rails.cache.read("Dictionary.#{method_name}").dup
20
- if options.keys.include? :locale
20
+ if options.keys.include? :locale or options.keys.include? "locale"
21
21
  locale="name_#{options[:locale]}"
22
22
  listed_attr.map! { |a| [a.send(locale),a.id] }
23
23
  listed_attr.sort {|a,b| a.last <=> b.last } # maybe remove this one
@@ -0,0 +1,3 @@
1
+ module RailsDictionary
2
+ VERSION = "0.0.3"
3
+ end
@@ -1,4 +1,4 @@
1
- require "dictionary/acts_as_dictionary"
2
- require "dictionary/acts_as_dict_slave"
3
- require "dictionary/acts_as_dict_type"
4
- require "dictionary/array_core_ext"
1
+ require "rails_dictionary/acts_as_dictionary"
2
+ require "rails_dictionary/acts_as_dict_slave"
3
+ require "rails_dictionary/acts_as_dict_type"
4
+ require "rails_dictionary/array_core_ext"
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
- require "dictionary/version"
3
+ require "rails_dictionary/version"
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "rails_dictionary"
7
- s.version = Dictionary::VERSION
7
+ s.version = RailsDictionary::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["raykin"]
10
10
  s.email = ["raykincoldxiao@campus.com"]
11
- s.homepage = "https://github.com/raykin/dictionary"
11
+ s.homepage = "https://github.com/raykin/rails_dictionary"
12
12
  s.summary = %q{dictionary data for application}
13
13
  s.description = %q{mapping static data of web application to Dictionary class}
14
14
 
@@ -1,5 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
- # min test
3
2
  require "test/unit"
4
3
  require "active_support"
5
4
  require "active_record"
@@ -7,7 +6,7 @@ require "ruby-debug"
7
6
  Object.const_set "RAILS_CACHE", ActiveSupport::Cache.lookup_store
8
7
  require "active_support/cache"
9
8
  require "rails"
10
- # $: << "/home/raykin/studio/dictionary/lib" # tmply added for local testing
9
+ # $: << "/home/raykin/studio/rails_dictionary/lib" # tmply added for local testing
11
10
  require "#{File.dirname(__FILE__)}/../lib/rails_dictionary.rb"
12
11
 
13
12
  ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rails_dictionary
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - raykin
@@ -24,20 +24,19 @@ extensions: []
24
24
  extra_rdoc_files: []
25
25
 
26
26
  files:
27
- - .gitignore
28
27
  - Gemfile
29
28
  - README.rdoc
30
29
  - Rakefile
31
- - dictionary.gemspec
32
- - lib/dictionary/acts_as_dict_slave.rb
33
- - lib/dictionary/acts_as_dict_type.rb
34
- - lib/dictionary/acts_as_dictionary.rb
35
- - lib/dictionary/array_core_ext.rb
36
- - lib/dictionary/version.rb
37
30
  - lib/rails_dictionary.rb
38
- - test/dictionary_test.rb
31
+ - lib/rails_dictionary/acts_as_dict_slave.rb
32
+ - lib/rails_dictionary/acts_as_dict_type.rb
33
+ - lib/rails_dictionary/acts_as_dictionary.rb
34
+ - lib/rails_dictionary/array_core_ext.rb
35
+ - lib/rails_dictionary/version.rb
36
+ - rails_dictionary.gemspec
37
+ - test/rails_dictionary_test.rb
39
38
  has_rdoc: true
40
- homepage: https://github.com/raykin/dictionary
39
+ homepage: https://github.com/raykin/rails_dictionary
41
40
  licenses: []
42
41
 
43
42
  post_install_message:
@@ -65,4 +64,4 @@ signing_key:
65
64
  specification_version: 3
66
65
  summary: dictionary data for application
67
66
  test_files:
68
- - test/dictionary_test.rb
67
+ - test/rails_dictionary_test.rb
data/.gitignore DELETED
@@ -1,4 +0,0 @@
1
- *.gem
2
- .bundle
3
- Gemfile.lock
4
- pkg/*
@@ -1,3 +0,0 @@
1
- module Dictionary
2
- VERSION = "0.0.2"
3
- end