schema_comments 0.1.4 → 0.2.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,23 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "activesupport", "~> 3.1.0"
4
+ gem "activerecord", "~> 3.1.0"
5
+
6
+
7
+ group :test do
8
+ gem "rails", "~> 3.1.0"
9
+ gem "sqlite3"
10
+ gem "yaml_waml"
11
+ end
12
+
13
+ # Add dependencies to develop your gem here.
14
+ # Include everything needed to run rake, tests, features, etc.
15
+ group :development do
16
+ gem "rspec", "~> 2.8.0"
17
+ gem "rspec-rails", "~> 2.8.1"
18
+ gem "yard", "~> 0.7"
19
+ gem "rdoc", "~> 3.12"
20
+ gem "bundler", "~> 1.0.0"
21
+ gem "jeweler", "~> 1.8.3"
22
+ gem "simplecov", ">= 0"
23
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,125 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ actionmailer (3.1.4)
5
+ actionpack (= 3.1.4)
6
+ mail (~> 2.3.0)
7
+ actionpack (3.1.4)
8
+ activemodel (= 3.1.4)
9
+ activesupport (= 3.1.4)
10
+ builder (~> 3.0.0)
11
+ erubis (~> 2.7.0)
12
+ i18n (~> 0.6)
13
+ rack (~> 1.3.6)
14
+ rack-cache (~> 1.1)
15
+ rack-mount (~> 0.8.2)
16
+ rack-test (~> 0.6.1)
17
+ sprockets (~> 2.0.3)
18
+ activemodel (3.1.4)
19
+ activesupport (= 3.1.4)
20
+ builder (~> 3.0.0)
21
+ i18n (~> 0.6)
22
+ activerecord (3.1.4)
23
+ activemodel (= 3.1.4)
24
+ activesupport (= 3.1.4)
25
+ arel (~> 2.2.3)
26
+ tzinfo (~> 0.3.29)
27
+ activeresource (3.1.4)
28
+ activemodel (= 3.1.4)
29
+ activesupport (= 3.1.4)
30
+ activesupport (3.1.4)
31
+ multi_json (~> 1.0)
32
+ arel (2.2.3)
33
+ builder (3.0.0)
34
+ diff-lcs (1.1.3)
35
+ erubis (2.7.0)
36
+ git (1.2.5)
37
+ hike (1.2.1)
38
+ i18n (0.6.0)
39
+ jeweler (1.8.3)
40
+ bundler (~> 1.0)
41
+ git (>= 1.2.5)
42
+ rake
43
+ rdoc
44
+ json (1.6.6)
45
+ mail (2.3.3)
46
+ i18n (>= 0.4.0)
47
+ mime-types (~> 1.16)
48
+ treetop (~> 1.4.8)
49
+ mime-types (1.18)
50
+ multi_json (1.2.0)
51
+ polyglot (0.3.3)
52
+ rack (1.3.6)
53
+ rack-cache (1.2)
54
+ rack (>= 0.4)
55
+ rack-mount (0.8.3)
56
+ rack (>= 1.0.0)
57
+ rack-ssl (1.3.2)
58
+ rack
59
+ rack-test (0.6.1)
60
+ rack (>= 1.0)
61
+ rails (3.1.4)
62
+ actionmailer (= 3.1.4)
63
+ actionpack (= 3.1.4)
64
+ activerecord (= 3.1.4)
65
+ activeresource (= 3.1.4)
66
+ activesupport (= 3.1.4)
67
+ bundler (~> 1.0)
68
+ railties (= 3.1.4)
69
+ railties (3.1.4)
70
+ actionpack (= 3.1.4)
71
+ activesupport (= 3.1.4)
72
+ rack-ssl (~> 1.3.2)
73
+ rake (>= 0.8.7)
74
+ rdoc (~> 3.4)
75
+ thor (~> 0.14.6)
76
+ rake (0.9.2.2)
77
+ rdoc (3.12)
78
+ json (~> 1.4)
79
+ rspec (2.8.0)
80
+ rspec-core (~> 2.8.0)
81
+ rspec-expectations (~> 2.8.0)
82
+ rspec-mocks (~> 2.8.0)
83
+ rspec-core (2.8.0)
84
+ rspec-expectations (2.8.0)
85
+ diff-lcs (~> 1.1.2)
86
+ rspec-mocks (2.8.0)
87
+ rspec-rails (2.8.1)
88
+ actionpack (>= 3.0)
89
+ activesupport (>= 3.0)
90
+ railties (>= 3.0)
91
+ rspec (~> 2.8.0)
92
+ simplecov (0.6.1)
93
+ multi_json (~> 1.0)
94
+ simplecov-html (~> 0.5.3)
95
+ simplecov-html (0.5.3)
96
+ sprockets (2.0.3)
97
+ hike (~> 1.2)
98
+ rack (~> 1.0)
99
+ tilt (~> 1.1, != 1.3.0)
100
+ sqlite3 (1.3.5)
101
+ thor (0.14.6)
102
+ tilt (1.3.3)
103
+ treetop (1.4.10)
104
+ polyglot
105
+ polyglot (>= 0.3.1)
106
+ tzinfo (0.3.33)
107
+ yaml_waml (0.3.0)
108
+ yard (0.7.5)
109
+
110
+ PLATFORMS
111
+ ruby
112
+
113
+ DEPENDENCIES
114
+ activerecord (~> 3.1.0)
115
+ activesupport (~> 3.1.0)
116
+ bundler (~> 1.0.0)
117
+ jeweler (~> 1.8.3)
118
+ rails (~> 3.1.0)
119
+ rdoc (~> 3.12)
120
+ rspec (~> 2.8.0)
121
+ rspec-rails (~> 2.8.1)
122
+ simplecov
123
+ sqlite3
124
+ yaml_waml
125
+ yard (~> 0.7)
data/README.rdoc CHANGED
@@ -1,7 +1,6 @@
1
- SchemaComments
2
- ==========
1
+ = SchemaComments
3
2
 
4
- == Install ==
3
+ == Install
5
4
 
6
5
  === as a plugin
7
6
  ruby script/plugin install git://github.com/akm/schema_comments.git
@@ -26,7 +25,7 @@ If you install schema_comments as a gem, must create config/initializers/schema_
26
25
  SchemaComments.setup
27
26
 
28
27
 
29
- == overview ==
28
+ == overview
30
29
  schema_commentsプラグインを使うと、テーブルとカラムにコメントを記述することができます。
31
30
 
32
31
  class CreateProducts < ActiveRecord::Migration
@@ -67,13 +66,13 @@ columns, create_table, drop_table, rename_table
67
66
  remove_column, add_column, change_column
68
67
 
69
68
 
70
- == コメントはどこに保存されるのか ==
69
+ == コメントはどこに保存されるのか
71
70
  db/schema_comments.yml にYAML形式で保存されます。
72
71
  あまり推奨しませんが、もしマイグレーションにコメントを記述するのを忘れてしまった場合、db/schema_comments.yml
73
72
  を直接編集した後、rake db:schema:dumpやマイグレーションを実行すると、db/schema.rbのコメントに反映されます。
74
73
 
75
74
 
76
- == I18nへの対応 ==
75
+ == I18nへの対応
77
76
  rake i18n:schema_comments:update_config_localeタスクを実行すると、i18n用のYAMLを更新できます。
78
77
 
79
78
  rake i18n:schema_comments:update_config_locale LOCALE=ja でデフォルトではconfig/locales/ja.ymlを更新します。
@@ -85,7 +84,7 @@ I18n.default_locale = 'ja'
85
84
  また出力先のYAMLのPATHを指定したい場合、YAML_PATHで指定が可能です。
86
85
  rake i18n:schema_comments:update_config_locale LOCALE=ja YAML_PATH=/path/to/yaml
87
86
 
88
- === コメント内コメント ===
87
+ === コメント内コメント
89
88
  コメント中の ((( から ))) は反映されませんので、モデル名/属性名に含めたくない箇所は ((( と ))) で括ってください。
90
89
  ((( ))) と同様に[[[ ]]]も使用できます。
91
90
  例えば以下のようにdb/schema.rbに出力されている場合、
@@ -113,17 +112,17 @@ ja:
113
112
 
114
113
 
115
114
 
116
- == MySQLのビュー ==
115
+ == MySQLのビュー
117
116
  MySQLのビューを使用した場合、元々MySQLではSHOW TABLES でビューも表示してしまうため、
118
117
  ビューはテーブルとしてSchemaDumperに認識され、development環境ではMySQLのビューとして作成されているのに、
119
118
  test環境ではテーブルとして作成されてしまい、テストが正しく動かないことがあります。
120
119
  これを避けるため、schema_commentsでは、db/schema.rbを出力する際、テーブルに関する記述の後に、CREATE VIEWを行う記述を追加します。
121
120
 
122
121
 
123
- == annotate_models ==
122
+ == annotate_models
124
123
  rake db:annotate で以下のようなコメントを、モデル、テスト、フィクスチャといったモデルに関係の強いファイルの
125
124
  先頭に追加します。
126
- # == Schema Info ==
125
+ # == Schema Info
127
126
  #
128
127
  # Schema version: 20090721185959
129
128
  #
data/Rakefile CHANGED
@@ -1,50 +1,44 @@
1
+ # encoding: utf-8
2
+
1
3
  require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
2
12
  require 'rake'
3
13
 
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "schema_comments"
8
- gem.summary = "schema_comments generates extra methods dynamically"
9
- gem.description = "schema_comments generates extra methods dynamically for attribute which has options"
10
- gem.email = "akm2000@gmail.com"
11
- gem.homepage = "http://github.com/akm/schema_comments"
12
- gem.authors = ["akimatter"]
13
- gem.add_development_dependency "rspec", ">= 1.2.9"
14
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
- gem.test_files = Dir.glob('spec/**/*.rb') + Dir.glob('spec/**/*.yml')
16
- end
17
- Jeweler::GemcutterTasks.new
18
- rescue LoadError
19
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "schema_comments"
18
+ gem.homepage = "http://github.com/akm/schema_comments"
19
+ gem.license = "Ruby License"
20
+ gem.summary = "schema_comments generates extra methods dynamically"
21
+ gem.description = "schema_comments generates extra methods dynamically for attribute which has options"
22
+ gem.email = "akm2000@gmail.com"
23
+ gem.authors = ["akimatter"]
24
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
25
+ gem.test_files = Dir.glob('spec/**/*.rb') + Dir.glob('spec/**/*.yml')
26
+ # dependencies defined in Gemfile
20
27
  end
28
+ Jeweler::RubygemsDotOrgTasks.new
21
29
 
22
- require 'spec/rake/spectask'
23
- Spec::Rake::SpecTask.new(:spec) do |spec|
24
- spec.libs << 'lib' << 'spec'
25
- spec.spec_files = FileList['spec/**/*_spec.rb']
30
+ require 'rspec/core'
31
+ require 'rspec/core/rake_task'
32
+ RSpec::Core::RakeTask.new(:spec) do |spec|
33
+ spec.pattern = FileList['spec/**/*_spec.rb']
26
34
  end
27
35
 
28
- Spec::Rake::SpecTask.new(:rcov) do |spec|
29
- spec.libs << 'lib' << 'spec'
36
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
30
37
  spec.pattern = 'spec/**/*_spec.rb'
31
38
  spec.rcov = true
32
- spec.rcov_opts = lambda do
33
- IO.readlines("spec/rcov.opts").map {|l| l.chomp.split " "}.flatten
34
- end
35
39
  end
36
40
 
37
- task :spec => :check_dependencies
38
-
39
41
  task :default => :spec
40
42
 
41
- require 'rake/rdoctask'
42
- Rake::RDocTask.new do |rdoc|
43
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
44
-
45
- rdoc.rdoc_dir = 'rdoc'
46
- rdoc.title = "schema_comments #{version}"
47
- rdoc.rdoc_files.include('README.rdoc')
48
- rdoc.rdoc_files.include('lib/**/*.rb')
49
- rdoc.options = ["--charset", "utf-8", "--line-numbers"]
50
- end
43
+ require 'yard'
44
+ YARD::Rake::YardocTask.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.2.0.alpha1
@@ -2,16 +2,18 @@
2
2
  # fork from
3
3
  # http://github.com/rotuka/annotate_models/blob/d2afee82020dbc592b147d92f9beeadbf665a9e0/lib/annotate_models.rb
4
4
 
5
+ require 'rails'
6
+
5
7
  require "config/environment" if File.exist?("config/environment")
6
8
 
7
- MODEL_DIR = File.join(RAILS_ROOT, "app/models" )
8
- UNIT_TEST_DIR = File.join(RAILS_ROOT, "test/unit" )
9
- SPEC_MODEL_DIR = File.join(RAILS_ROOT, "spec/models")
10
- FIXTURES_DIR = File.join(RAILS_ROOT, "test/fixtures")
11
- SPEC_FIXTURES_DIR = File.join(RAILS_ROOT, "spec/fixtures")
9
+ MODEL_DIR = Rails.root.join("app/models" )
10
+ UNIT_TEST_DIR = Rails.root.join("test/unit" )
11
+ SPEC_MODEL_DIR = Rails.root.join("spec/models")
12
+ FIXTURES_DIR = Rails.root.join("test/fixtures")
13
+ SPEC_FIXTURES_DIR = Rails.root.join("spec/fixtures")
12
14
 
13
15
  module AnnotateModels
14
-
16
+
15
17
  PREFIX_AT_BOTTOM = "== Schema Info"
16
18
  SUFFIX_AT_BOTTOM = ""
17
19
  PREFIX_ON_TOP = "== Schema Info =="
@@ -61,7 +63,7 @@ module AnnotateModels
61
63
  value.inspect
62
64
  end
63
65
  end
64
-
66
+
65
67
  # Use the column information in an ActiveRecord class
66
68
  # to create a comment block containing a line for
67
69
  # each column. The line contains the column name,
@@ -71,7 +73,7 @@ module AnnotateModels
71
73
  table_info << " # #{klass.table_comment}" unless klass.table_comment.blank?
72
74
  table_info << "\n#\n"
73
75
  max_size = klass.column_names.collect{|name| name.size}.max + 1
74
-
76
+
75
77
  columns = klass.columns
76
78
 
77
79
  cols = if self.sort_columns
@@ -83,10 +85,10 @@ module AnnotateModels
83
85
  else
84
86
  columns
85
87
  end
86
-
88
+
87
89
  col_lines = append_comments(cols.map{|col| [col, annotate_column(col, klass, max_size)]})
88
90
  cols_text = col_lines.join("\n")
89
-
91
+
90
92
  result = "# #{self.output_prefix}\n# \n# Schema version: #{get_schema_version}\n#\n"
91
93
  result << table_info
92
94
  result << cols_text
@@ -94,13 +96,13 @@ module AnnotateModels
94
96
  result << "\n"
95
97
  result
96
98
  end
97
-
99
+
98
100
  def self.annotate_column(col, klass, max_size)
99
101
  attrs = []
100
102
  attrs << "not null" unless col.null
101
103
  attrs << "default(#{quote(col.default)})" if col.default
102
104
  attrs << "primary key" if col.name == klass.primary_key
103
-
105
+
104
106
  col_type = col.type.to_s
105
107
  if col_type == "decimal"
106
108
  col_type << "(#{col.precision}, #{col.scale})"
@@ -120,7 +122,7 @@ module AnnotateModels
120
122
  end
121
123
  end
122
124
  end
123
-
125
+
124
126
  # Add a schema block to a file. If the file already contains
125
127
  # a schema info block (a comment starting
126
128
  # with "Schema as of ..."), remove it first.
@@ -128,7 +130,7 @@ module AnnotateModels
128
130
  def self.annotate_one_file(file_name, info_block)
129
131
  if File.exist?(file_name)
130
132
  content = File.read(file_name)
131
-
133
+
132
134
  encoding_comment = content.scan(/^\#\s*-\*-(.+?)-\*-/).flatten.first
133
135
  content.sub!(/^\#\s*-\*-(.+?)-\*-/, '')
134
136
 
@@ -136,7 +138,7 @@ module AnnotateModels
136
138
  content.sub!(/(\n)*^# #{PREFIX_ON_TOP}.*?\n(#.*\n)*# #{SUFFIX_ON_TOP}/, '')
137
139
  content.sub!(/(\n)*^# #{PREFIX_AT_BOTTOM}.*?\n(#.*\n)*#.*(\n)*/, '')
138
140
  content.sub!(/^[\n\s]*/, '')
139
-
141
+
140
142
  # Write it back
141
143
  File.open(file_name, "w") do |f|
142
144
  f.print "# -*- #{encoding_comment.strip} -*-\n\n" unless encoding_comment.blank?
@@ -153,27 +155,27 @@ module AnnotateModels
153
155
  end
154
156
  end
155
157
 
156
-
158
+
157
159
  # Given the name of an ActiveRecord class, create a schema
158
160
  # info block (basically a comment containing information
159
161
  # on the columns and their types) and put it at the front
160
- # of the model and fixture source files.
162
+ # of the model and fixture source files.
161
163
  def self.annotate(klass)
162
164
  info = get_schema_info(klass)
163
165
  model_name = klass.name.underscore
164
166
  fixtures_name = "#{klass.table_name}.yml"
165
-
167
+
166
168
  [
167
169
  File.join(self.model_dir, "#{model_name}.rb"), # model
168
170
  File.join(UNIT_TEST_DIR, "#{model_name}_test.rb"), # test
169
171
  File.join(FIXTURES_DIR, fixtures_name), # fixture
170
172
  File.join(SPEC_MODEL_DIR, "#{model_name}_spec.rb"), # spec
171
173
  File.join(SPEC_FIXTURES_DIR, fixtures_name), # spec fixture
172
- File.join(RAILS_ROOT, 'test', 'factories.rb'), # factories file
173
- File.join(RAILS_ROOT, 'spec', 'factories.rb'), # factories file
174
+ Rails.root.join( 'test', 'factories.rb'), # factories file
175
+ Rails.root.join( 'spec', 'factories.rb'), # factories file
174
176
  ].each { |file| annotate_one_file(file, info) }
175
177
  end
176
-
178
+
177
179
  # Return a list of the model files to annotate. If we have
178
180
  # command line arguments, they're assumed to be either
179
181
  # the underscore or CamelCase versions of model names.
@@ -183,16 +185,16 @@ module AnnotateModels
183
185
  result = nil
184
186
  if self.models.empty?
185
187
  Dir.chdir(self.model_dir) do
186
- result = Dir["**/*.rb"].map do |filename|
188
+ result = Dir["**/*.rb"].map do |filename|
187
189
  filename.sub(/\.rb$/, '').camelize
188
190
  end
189
191
  end
190
192
  else
191
193
  result = self.models.dup
192
194
  end
193
- result
195
+ result
194
196
  end
195
-
197
+
196
198
  # We're passed a name of things that might be
197
199
  # ActiveRecord models. If we can find the class, and
198
200
  # if its a subclass of ActiveRecord::Base,
@@ -213,7 +215,7 @@ module AnnotateModels
213
215
  end
214
216
  puts "Annotated #{annotated.join(', ')}"
215
217
  end
216
-
218
+
217
219
  def self.get_schema_version
218
220
  unless @schema_version
219
221
  version = ActiveRecord::Migrator.current_version rescue 0
@@ -1,6 +1,6 @@
1
1
  module HashKeyOrderable
2
2
  attr_accessor :key_order
3
-
3
+
4
4
  def each_with_key_order(&block)
5
5
  if @key_order.nil? || @key_order.empty?
6
6
  each_without_key_order(&block)
@@ -7,12 +7,12 @@ module SchemaComments
7
7
  alias :columns :columns_with_schema_comments
8
8
  end
9
9
  end
10
-
10
+
11
11
  module ClassMethods
12
12
  def table_comment
13
13
  @table_comment ||= connection.table_comment(table_name)
14
14
  end
15
-
15
+
16
16
  def columns_with_schema_comments
17
17
  result = columns_without_schema_comments
18
18
  unless @column_comments_loaded
@@ -24,17 +24,17 @@ module SchemaComments
24
24
  end
25
25
  result
26
26
  end
27
-
27
+
28
28
  def reset_column_comments
29
29
  @column_comments_loaded = false
30
30
  end
31
-
31
+
32
32
  def reset_table_comments
33
33
  @table_comment = nil
34
34
  end
35
-
35
+
36
36
  attr_accessor_with_default :ignore_pattern_to_export_i18n, /\[.*\]/
37
-
37
+
38
38
  def export_i18n_models
39
39
  subclasses = ActiveRecord::Base.send(:subclasses).select do |klass|
40
40
  (klass != SchemaComments::SchemaComment) and
@@ -47,7 +47,7 @@ module SchemaComments
47
47
  d
48
48
  end
49
49
  end
50
-
50
+
51
51
  def export_i18n_attributes(connection = ActiveRecord::Base.connection)
52
52
  subclasses = ActiveRecord::Base.send(:subclasses).select do |klass|
53
53
  (klass != SchemaComments::SchemaComment) and
@@ -65,8 +65,8 @@ module SchemaComments
65
65
  d
66
66
  end
67
67
  end
68
-
68
+
69
69
  end
70
-
70
+
71
71
  end
72
72
  end
@@ -40,16 +40,21 @@ module SchemaComments
40
40
  # column_comments(:users, {:first_name => "User's given name", :last_name => "Family name"})
41
41
  # column_comments(:tags , {:id => "Tag IDentifier"})
42
42
  def column_comments(*args)
43
- if (args.length == 2) && args.last.is_a?(Hash)
44
- # マイグレーションからActiveRecord関係を経由して呼び出されます。
45
- table_name = args.first.to_s
46
- args.last.each do |col, comment|
47
- column_comment(table_name, col, comment) unless SchemaComments.quiet
43
+ case args.length
44
+ when 1 then
45
+ # こっちはSchemaComments::Base::ClassMethods#columns_with_schema_commentsから呼び出されます。
46
+ return SchemaComment.column_comments(args.first)
47
+ when 2 then
48
+ if args.last.is_a?(Hash)
49
+ # マイグレーションからActiveRecord関係を経由して呼び出されます。
50
+ table_name = args.first.to_s
51
+ args.last.each do |col, comment|
52
+ column_comment(table_name, col, comment) unless SchemaComments.quiet
53
+ end
54
+ return
48
55
  end
49
- else
50
- # こっちはSchemaComments::Base::ClassMethods#columns_with_schema_commentsから呼び出されます。
51
- SchemaComment.column_comments(args)
52
56
  end
57
+ raise ArgumentError, "#{self.class}#column_comments accepts (tabel_name) or (tabel_name, hash_col_comment)"
53
58
  end
54
59
 
55
60
  def table_comment(table_name, comment = nil) #:nodoc:
@@ -7,7 +7,7 @@ module SchemaComments
7
7
  alias :migrate :migrate_with_schema_comments
8
8
  end
9
9
  end
10
-
10
+
11
11
  module ClassMethods
12
12
  def migrate_with_schema_comments(*args, &block)
13
13
  SchemaComments::SchemaComment.yaml_access do
@@ -15,6 +15,6 @@ module SchemaComments
15
15
  end
16
16
  end
17
17
  end
18
-
18
+
19
19
  end
20
20
  end
@@ -7,7 +7,7 @@ module SchemaComments
7
7
  alias :migrate :migrate_with_schema_comments
8
8
  end
9
9
  end
10
-
10
+
11
11
  module ClassMethods
12
12
  def migrate_with_schema_comments(*args, &block)
13
13
  SchemaComments::SchemaComment.yaml_access do
@@ -15,6 +15,6 @@ module SchemaComments
15
15
  end
16
16
  end
17
17
  end
18
-
18
+
19
19
  end
20
20
  end
@@ -7,7 +7,7 @@ module SchemaComments
7
7
  alias :define :define_with_schema_comments
8
8
  end
9
9
  end
10
-
10
+
11
11
  module ClassMethods
12
12
  def define_with_schema_comments(*args, &block)
13
13
  SchemaComments::SchemaComment.yaml_access do
@@ -3,7 +3,7 @@ require 'yaml/store'
3
3
  require 'hash_key_orderable'
4
4
 
5
5
  module SchemaComments
6
-
6
+
7
7
  # 現在はActiveRecord::Baseを継承していますが、将来移行が完全に終了した
8
8
  # 時点で、ActiveRecord::Baseの継承をやめます。
9
9
  #
@@ -23,7 +23,7 @@ module SchemaComments
23
23
  return nil unless table_exists?
24
24
  connection.select_value(sanitize_conditions("select descriptions from schema_comments where table_name = '%s' and column_name is null" % table_name))
25
25
  end
26
-
26
+
27
27
  def column_comment(table_name, column_name)
28
28
  if yaml_exist?
29
29
  @column_names ||= yaml_access{|db| db[COLUMN_KEY] }.dup
@@ -33,7 +33,7 @@ module SchemaComments
33
33
  return nil unless table_exists?
34
34
  connection.select_value(sanitize_conditions("select descriptions from schema_comments where table_name = '%s' and column_name = '%s'" % [table_name, column_name]))
35
35
  end
36
-
36
+
37
37
  def column_comments(table_name)
38
38
  if yaml_exist?
39
39
  result = nil
@@ -45,14 +45,14 @@ module SchemaComments
45
45
  hash_array = connection.select_all(sanitize_conditions("select column_name, descriptions from schema_comments where table_name = '%s' and column_name is not null" % table_name))
46
46
  hash_array.inject({}){|dest, r| dest[r['column_name']] = r['descriptions']; dest}
47
47
  end
48
-
48
+
49
49
  def save_table_comment(table_name, comment)
50
50
  yaml_access do |db|
51
51
  db[TABLE_KEY][table_name.to_s] = comment
52
52
  end
53
53
  @table_names = nil
54
54
  end
55
-
55
+
56
56
  def save_column_comment(table_name, column_name, comment)
57
57
  yaml_access do |db|
58
58
  db[COLUMN_KEY][table_name.to_s] ||= {}
@@ -60,7 +60,7 @@ module SchemaComments
60
60
  end
61
61
  @column_names = nil
62
62
  end
63
-
63
+
64
64
  def destroy_of(table_name, column_name)
65
65
  yaml_access do |db|
66
66
  column_hash = db[COLUMN_KEY][table_name.to_s]
@@ -68,7 +68,7 @@ module SchemaComments
68
68
  end
69
69
  @column_names = nil
70
70
  end
71
-
71
+
72
72
  def update_table_name(table_name, new_name)
73
73
  if yaml_exist?
74
74
  yaml_access do |db|
@@ -79,7 +79,7 @@ module SchemaComments
79
79
  @table_names = nil
80
80
  @column_names = nil
81
81
  end
82
-
82
+
83
83
  def update_column_name(table_name, column_name, new_name)
84
84
  if yaml_exist?
85
85
  yaml_access do |db|
@@ -92,11 +92,11 @@ module SchemaComments
92
92
  @table_names = nil
93
93
  @column_names = nil
94
94
  end
95
-
95
+
96
96
  def yaml_exist?
97
97
  File.exist?(SchemaComments.yaml_path)
98
98
  end
99
-
99
+
100
100
  def yaml_access(&block)
101
101
  if @yaml_transaction
102
102
  yield(@yaml_transaction) if block_given?