annotate 2.4.1.beta1 → 2.5.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +75 -1
- data/README.rdoc +80 -57
- data/bin/annotate +46 -19
- data/lib/annotate.rb +4 -14
- data/lib/annotate/active_record_patch.rb +9 -0
- data/lib/annotate/annotate_models.rb +188 -112
- data/lib/annotate/annotate_routes.rb +11 -11
- data/lib/annotate/tasks.rb +6 -0
- data/lib/annotate/version.rb +5 -0
- data/lib/generators/annotate_models/USAGE +4 -0
- data/lib/generators/annotate_models/install_generator.rb +14 -0
- data/lib/generators/annotate_models/templates/auto_annotate_models.rake +20 -0
- data/lib/tasks/annotate_models.rake +29 -9
- data/lib/tasks/annotate_routes.rake +3 -2
- data/tasks/migrate.rake +4 -4
- metadata +31 -29
- data/Rakefile +0 -51
- data/VERSION.yml +0 -5
- data/annotate.gemspec +0 -58
- data/spec/annotate/annotate_models_spec.rb +0 -92
- data/spec/annotate/annotate_routes_spec.rb +0 -47
- data/spec/annotate_spec.rb +0 -9
- data/spec/spec.opts +0 -1
- data/spec/spec_helper.rb +0 -10
- data/todo.txt +0 -5
@@ -1,25 +1,25 @@
|
|
1
1
|
# == Annotate Routes
|
2
|
-
#
|
2
|
+
#
|
3
3
|
# Based on:
|
4
|
-
#
|
5
|
-
#
|
4
|
+
#
|
5
|
+
#
|
6
6
|
#
|
7
7
|
# Prepends the output of "rake routes" to the top of your routes.rb file.
|
8
8
|
# Yes, it's simple but I'm thick and often need a reminder of what my routes mean.
|
9
|
-
#
|
9
|
+
#
|
10
10
|
# Running this task will replace any exising route comment generated by the task.
|
11
11
|
# Best to back up your routes file before running:
|
12
|
-
#
|
12
|
+
#
|
13
13
|
# Author:
|
14
14
|
# Gavin Montague
|
15
15
|
# gavin@leftbrained.co.uk
|
16
|
-
#
|
16
|
+
#
|
17
17
|
# Released under the same license as Ruby. No Support. No Warranty.module AnnotateRoutes
|
18
18
|
#
|
19
|
-
module AnnotateRoutes
|
19
|
+
module AnnotateRoutes
|
20
20
|
PREFIX = "#== Route Map"
|
21
|
-
|
22
|
-
def self.do_annotate
|
21
|
+
|
22
|
+
def self.do_annotate
|
23
23
|
routes_rb = File.join("config", "routes.rb")
|
24
24
|
header = PREFIX + "\n# Generated on #{Time.now.strftime("%d %b %Y %H:%M")}\n#"
|
25
25
|
if File.exists? routes_rb
|
@@ -29,8 +29,8 @@ module AnnotateRoutes
|
|
29
29
|
routes_map = routes_map.inject(header){|sum, line| sum<<"\n# "<<line}
|
30
30
|
content = File.read(routes_rb)
|
31
31
|
content, old = content.split(/^#== Route .*?\n/)
|
32
|
-
File.open(routes_rb, "wb") do |f|
|
33
|
-
f.puts content.sub!(/\n?\z/, "\n") + routes_map
|
32
|
+
File.open(routes_rb, "wb") do |f|
|
33
|
+
f.puts content.sub!(/\n?\z/, "\n") + routes_map
|
34
34
|
end
|
35
35
|
puts "Route file annotated."
|
36
36
|
else
|
@@ -0,0 +1,6 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
# Make tasks visible for Rails also when used as gem.
|
5
|
+
Dir[File.join(File.dirname(__FILE__), '..', 'tasks', '**/*.rake')].each { |rake| load rake }
|
6
|
+
Dir[File.join(File.dirname(__FILE__), '..', '..', 'tasks', '**/*.rake')].each { |rake| load rake }
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module AnnotateModels
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
desc "Copy annotate_models rakefiles for automatic annotation"
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
|
7
|
+
# copy rake tasks
|
8
|
+
def copy_tasks
|
9
|
+
template "auto_annotate_models.rake", "lib/tasks/auto_annotate_models.rake"
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# NOTE: only doing this in development as some production environments (Heroku)
|
2
|
+
# NOTE: are sensitive to local FS writes, and besides -- it's just not proper
|
3
|
+
# NOTE: to have a dev-mode tool do its thing in production.
|
4
|
+
if(Rails.env.development?)
|
5
|
+
task :set_annotation_options do
|
6
|
+
ENV['position_in_class'] = "before"
|
7
|
+
ENV['position_in_fixture'] = "before"
|
8
|
+
ENV['position_in_factory'] = "before"
|
9
|
+
ENV['show_indexes'] = "true"
|
10
|
+
ENV['include_version'] = "false"
|
11
|
+
ENV['exclude_tests'] = "false"
|
12
|
+
ENV['exclude_fixtures'] = "false"
|
13
|
+
ENV['ignore_model_sub_dir'] = "false"
|
14
|
+
ENV['skip_on_db_migrate'] = "false"
|
15
|
+
ENV['format_rdoc'] = "false"
|
16
|
+
ENV['format_markdown'] = "false"
|
17
|
+
ENV['no_sort'] = "false"
|
18
|
+
ENV['force'] = "false"
|
19
|
+
end
|
20
|
+
end
|
@@ -1,21 +1,41 @@
|
|
1
|
+
annotate_lib = File.expand_path(File.dirname(File.dirname(__FILE__)))
|
2
|
+
|
3
|
+
if(!ENV['is_cli'])
|
4
|
+
task :set_annotation_options
|
5
|
+
task :annotate_models => :set_annotation_options
|
6
|
+
end
|
7
|
+
|
1
8
|
desc "Add schema information (as comments) to model and fixture files"
|
2
9
|
task :annotate_models => :environment do
|
3
|
-
require
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
options
|
10
|
+
require "#{annotate_lib}/annotate/annotate_models"
|
11
|
+
require "#{annotate_lib}/annotate/active_record_patch"
|
12
|
+
|
13
|
+
true_re = /(true|t|yes|y|1)$/i
|
14
|
+
|
15
|
+
options={ :is_rake => true }
|
16
|
+
options[:position_in_class] = ENV['position_in_class'] || ENV['position'] || 'before'
|
17
|
+
options[:position_in_fixture] = ENV['position_in_fixture'] || ENV['position'] || 'before'
|
18
|
+
options[:position_in_factory] = ENV['position_in_factory'] || ENV['position'] || 'before'
|
19
|
+
options[:show_indexes] = ENV['show_indexes'] =~ true_re
|
20
|
+
options[:simple_indexes] = ENV['simple_indexes'] =~ true_re
|
9
21
|
options[:model_dir] = ENV['model_dir']
|
10
|
-
options[:include_version] = ENV['include_version']
|
22
|
+
options[:include_version] = ENV['include_version'] =~ true_re
|
11
23
|
options[:require] = ENV['require'] ? ENV['require'].split(',') : []
|
24
|
+
options[:exclude_tests] = ENV['exclude_tests'] =~ true_re
|
25
|
+
options[:exclude_fixtures] = ENV['exclude_fixtures'] =~ true_re
|
26
|
+
options[:ignore_model_sub_dir] = ENV['ignore_model_sub_dir'] =~ true_re
|
27
|
+
options[:format_rdoc] = ENV['format_rdoc'] =~ true_re
|
28
|
+
options[:format_markdown] = ENV['format_markdown'] =~ true_re
|
29
|
+
options[:no_sort] = ENV['no_sort'] =~ true_re
|
30
|
+
options[:force] = ENV['force'] =~ true_re
|
12
31
|
AnnotateModels.do_annotations(options)
|
13
32
|
end
|
14
33
|
|
15
34
|
desc "Remove schema information from model and fixture files"
|
16
35
|
task :remove_annotation => :environment do
|
17
|
-
require
|
18
|
-
|
36
|
+
require "#{annotate_lib}/annotate/annotate_models"
|
37
|
+
require "#{annotate_lib}/annotate/active_record_patch"
|
38
|
+
options={ :is_rake => true }
|
19
39
|
options[:model_dir] = ENV['model_dir']
|
20
40
|
AnnotateModels.remove_annotations(options)
|
21
41
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
desc "Prepends the route map to the top of routes.rb"
|
2
|
-
task :annotate_routes do
|
3
|
-
|
2
|
+
task :annotate_routes => :environment do
|
3
|
+
annotate_lib = File.expand_path(File.dirname(File.dirname(__FILE__)))
|
4
|
+
require "#{annotate_lib}/annotate/annotate_routes"
|
4
5
|
AnnotateRoutes.do_annotate
|
5
6
|
end
|
data/tasks/migrate.rake
CHANGED
@@ -13,9 +13,9 @@ namespace :db do
|
|
13
13
|
namespace :migrate do
|
14
14
|
[:change, :up, :down, :reset, :redo].each do |t|
|
15
15
|
task t do
|
16
|
-
Annotate::Migration.update_annotations
|
16
|
+
Annotate::Migration.update_annotations
|
17
17
|
end
|
18
|
-
end
|
18
|
+
end
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -24,9 +24,9 @@ module Annotate
|
|
24
24
|
@@working = false
|
25
25
|
|
26
26
|
def self.update_annotations
|
27
|
-
unless @@working
|
27
|
+
unless @@working || (ENV['skip_on_db_migrate'] =~ /(true|t|yes|y|1)$/i)
|
28
28
|
@@working = true
|
29
|
-
Rake::Task['annotate_models'].invoke
|
29
|
+
Rake::Task['annotate_models'].invoke
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: annotate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0.pre1
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,21 +12,26 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2012-06-08 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
|
-
name:
|
19
|
-
requirement:
|
18
|
+
name: rake
|
19
|
+
requirement: !ruby/object:Gem::Requirement
|
20
20
|
none: false
|
21
21
|
requirements:
|
22
22
|
- - ! '>='
|
23
23
|
- !ruby/object:Gem::Version
|
24
24
|
version: '0'
|
25
|
-
type: :
|
25
|
+
type: :runtime
|
26
26
|
prerelease: false
|
27
|
-
version_requirements:
|
28
|
-
|
29
|
-
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
description: Annotates Rails/ActiveRecord Models, routes, fixtures, and others based
|
34
|
+
on the database schema.
|
30
35
|
email:
|
31
36
|
- alex@stinky.com
|
32
37
|
- ctran@pragmaquest.com
|
@@ -38,28 +43,27 @@ extensions: []
|
|
38
43
|
extra_rdoc_files:
|
39
44
|
- README.rdoc
|
40
45
|
files:
|
41
|
-
- History.txt
|
42
46
|
- README.rdoc
|
43
|
-
-
|
44
|
-
-
|
45
|
-
|
46
|
-
-
|
47
|
-
- lib/annotate.rb
|
47
|
+
- History.txt
|
48
|
+
- !binary |-
|
49
|
+
YmluL2Fubm90YXRl
|
50
|
+
- lib/annotate/active_record_patch.rb
|
48
51
|
- lib/annotate/annotate_models.rb
|
49
52
|
- lib/annotate/annotate_routes.rb
|
53
|
+
- lib/annotate/tasks.rb
|
54
|
+
- lib/annotate/version.rb
|
55
|
+
- lib/annotate.rb
|
56
|
+
- lib/generators/annotate_models/install_generator.rb
|
57
|
+
- lib/generators/annotate_models/templates/auto_annotate_models.rake
|
58
|
+
- lib/generators/annotate_models/USAGE
|
50
59
|
- lib/tasks/annotate_models.rake
|
51
60
|
- lib/tasks/annotate_routes.rake
|
52
|
-
- spec/annotate/annotate_models_spec.rb
|
53
|
-
- spec/annotate/annotate_routes_spec.rb
|
54
|
-
- spec/annotate_spec.rb
|
55
|
-
- spec/spec.opts
|
56
|
-
- spec/spec_helper.rb
|
57
61
|
- tasks/migrate.rake
|
58
|
-
- todo.txt
|
59
62
|
homepage: http://github.com/ctran/annotate_models
|
60
63
|
licenses: []
|
61
64
|
post_install_message:
|
62
|
-
rdoc_options:
|
65
|
+
rdoc_options:
|
66
|
+
- --charset=UTF-8
|
63
67
|
require_paths:
|
64
68
|
- lib
|
65
69
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -68,6 +72,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
72
|
- - ! '>='
|
69
73
|
- !ruby/object:Gem::Version
|
70
74
|
version: '0'
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
hash: -2416321078825126796
|
71
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
79
|
none: false
|
73
80
|
requirements:
|
@@ -76,14 +83,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
83
|
version: 1.3.1
|
77
84
|
requirements: []
|
78
85
|
rubyforge_project: annotate
|
79
|
-
rubygems_version: 1.8.
|
86
|
+
rubygems_version: 1.8.21
|
80
87
|
signing_key:
|
81
88
|
specification_version: 3
|
82
|
-
summary: Annotates Rails
|
89
|
+
summary: Annotates Rails Models, routes, fixtures, and others based on the database
|
83
90
|
schema.
|
84
|
-
test_files:
|
85
|
-
- spec/annotate/annotate_models_spec.rb
|
86
|
-
- spec/annotate/annotate_routes_spec.rb
|
87
|
-
- spec/annotate_spec.rb
|
88
|
-
- spec/spec.opts
|
89
|
-
- spec/spec_helper.rb
|
91
|
+
test_files: []
|
data/Rakefile
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rake'
|
3
|
-
|
4
|
-
# want other tests/tasks run by default? Add them to the list
|
5
|
-
task :default => [:spec]
|
6
|
-
|
7
|
-
require 'jeweler'
|
8
|
-
Jeweler::Tasks.new do |gem|
|
9
|
-
gem.name = "annotate"
|
10
|
-
gem.summary = "Annotates Rails models, routes, fixtures, and others based on the database schema."
|
11
|
-
gem.description = "When run, inserts table descriptions from db.schema into a comment block of relevant source code."
|
12
|
-
gem.email = ["alex@stinky.com", 'ctran@pragmaquest.com', "x@nofxx.com", "turadg@aleahmad.net"]
|
13
|
-
gem.homepage = "http://github.com/ctran/annotate_models"
|
14
|
-
gem.authors = ['Cuong Tran', "Alex Chaffee", "Marcos Piccinini", "Turadg Aleahmad"]
|
15
|
-
|
16
|
-
gem.rubyforge_project = "annotate"
|
17
|
-
|
18
|
-
gem.add_development_dependency "rspec"
|
19
|
-
|
20
|
-
gem.test_files = `git ls-files -- {spec,features}/*`.split("\n")
|
21
|
-
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
22
|
-
gem.require_path = 'lib'
|
23
|
-
|
24
|
-
# note that Jeweler automatically reads the version from VERSION.yml
|
25
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
26
|
-
end
|
27
|
-
|
28
|
-
Jeweler::GemcutterTasks.new
|
29
|
-
|
30
|
-
|
31
|
-
require "rspec/core/rake_task" # RSpec 2.0
|
32
|
-
RSpec::Core::RakeTask.new(:spec) do |t|
|
33
|
-
t.pattern = 'spec/*_spec.rb'
|
34
|
-
# TODO this leaves out the specs on the library itself
|
35
|
-
end
|
36
|
-
|
37
|
-
# FIXME not working yet
|
38
|
-
RSpec::Core::RakeTask.new(:rcov) do |t|
|
39
|
-
t.pattern = 'spec/**/*_spec.rb'
|
40
|
-
t.rcov = true
|
41
|
-
end
|
42
|
-
|
43
|
-
# FIXME warns "already initialized constant Task"
|
44
|
-
# FIXME throws "uninitialized constant RDoc::VISIBILITIES"
|
45
|
-
# require 'rdoc/task'
|
46
|
-
# RDoc::Task.new do |rdoc|
|
47
|
-
# rdoc.main = "README.rdoc"
|
48
|
-
# rdoc.rdoc_files.include("README.rdoc", "lib/**/*.rb")
|
49
|
-
# # require 'lib/annotate'
|
50
|
-
# # rdoc.title = "annotate #{Annotate.version}"
|
51
|
-
# end
|
data/VERSION.yml
DELETED
data/annotate.gemspec
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = "annotate"
|
8
|
-
s.version = "2.4.1.beta1"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Cuong Tran", "Alex Chaffee", "Marcos Piccinini", "Turadg Aleahmad"]
|
12
|
-
s.date = "2011-09-02"
|
13
|
-
s.description = "When run, inserts table descriptions from db.schema into a comment block of relevant source code."
|
14
|
-
s.email = ["alex@stinky.com", "ctran@pragmaquest.com", "x@nofxx.com", "turadg@aleahmad.net"]
|
15
|
-
s.executables = ["annotate"]
|
16
|
-
s.extra_rdoc_files = [
|
17
|
-
"README.rdoc"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
"History.txt",
|
21
|
-
"README.rdoc",
|
22
|
-
"Rakefile",
|
23
|
-
"VERSION.yml",
|
24
|
-
"annotate.gemspec",
|
25
|
-
"bin/annotate",
|
26
|
-
"lib/annotate.rb",
|
27
|
-
"lib/annotate/annotate_models.rb",
|
28
|
-
"lib/annotate/annotate_routes.rb",
|
29
|
-
"lib/tasks/annotate_models.rake",
|
30
|
-
"lib/tasks/annotate_routes.rake",
|
31
|
-
"spec/annotate/annotate_models_spec.rb",
|
32
|
-
"spec/annotate/annotate_routes_spec.rb",
|
33
|
-
"spec/annotate_spec.rb",
|
34
|
-
"spec/spec.opts",
|
35
|
-
"spec/spec_helper.rb",
|
36
|
-
"tasks/migrate.rake",
|
37
|
-
"todo.txt"
|
38
|
-
]
|
39
|
-
s.homepage = "http://github.com/ctran/annotate_models"
|
40
|
-
s.require_paths = ["lib"]
|
41
|
-
s.rubyforge_project = "annotate"
|
42
|
-
s.rubygems_version = "1.8.10"
|
43
|
-
s.summary = "Annotates Rails models, routes, fixtures, and others based on the database schema."
|
44
|
-
s.test_files = ["spec/annotate/annotate_models_spec.rb", "spec/annotate/annotate_routes_spec.rb", "spec/annotate_spec.rb", "spec/spec.opts", "spec/spec_helper.rb"]
|
45
|
-
|
46
|
-
if s.respond_to? :specification_version then
|
47
|
-
s.specification_version = 3
|
48
|
-
|
49
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
50
|
-
s.add_development_dependency(%q<rspec>, [">= 0"])
|
51
|
-
else
|
52
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
53
|
-
end
|
54
|
-
else
|
55
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
@@ -1,92 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
-
require 'annotate/annotate_models'
|
3
|
-
require 'rubygems'
|
4
|
-
require 'active_support'
|
5
|
-
|
6
|
-
describe AnnotateModels do
|
7
|
-
|
8
|
-
def mock_klass(stubs={})
|
9
|
-
@mock_file ||= mock("Klass", stubs)
|
10
|
-
end
|
11
|
-
|
12
|
-
def mock_column(stubs={})
|
13
|
-
@mock_column ||= mock("Column", stubs)
|
14
|
-
end
|
15
|
-
|
16
|
-
it { AnnotateModels.quote(nil).should eql("NULL") }
|
17
|
-
it { AnnotateModels.quote(true).should eql("TRUE") }
|
18
|
-
it { AnnotateModels.quote(false).should eql("FALSE") }
|
19
|
-
it { AnnotateModels.quote(25).should eql("25") }
|
20
|
-
it { AnnotateModels.quote(25.6).should eql("25.6") }
|
21
|
-
it { AnnotateModels.quote(1e-20).should eql("1.0e-20") }
|
22
|
-
|
23
|
-
it "should get schema info" do
|
24
|
-
|
25
|
-
AnnotateModels.get_schema_info(mock_klass(
|
26
|
-
:connection => mock("Conn", :indexes => []),
|
27
|
-
:table_name => "users",
|
28
|
-
:primary_key => "id",
|
29
|
-
:column_names => ["id","login"],
|
30
|
-
:columns => [
|
31
|
-
mock_column(:type => "integer", :default => nil, :null => false, :name => "id", :limit => nil),
|
32
|
-
mock_column(:type => "string", :default => nil, :null => false, :name => "name", :limit => 50)
|
33
|
-
]), "Schema Info").should eql(<<-EOS)
|
34
|
-
# Schema Info
|
35
|
-
#
|
36
|
-
# Table name: users
|
37
|
-
#
|
38
|
-
# id :integer not null, primary key
|
39
|
-
# id :integer not null, primary key
|
40
|
-
#
|
41
|
-
|
42
|
-
EOS
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
describe "#get_model_class" do
|
47
|
-
module ::ActiveRecord
|
48
|
-
class Base
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def create(file, body="hi")
|
53
|
-
File.open(@dir + '/' + file, "w") do |f|
|
54
|
-
f.puts(body)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
before :all do
|
59
|
-
require "tmpdir"
|
60
|
-
@dir = Dir.tmpdir + "/#{Time.now.to_i}" + "/annotate_models"
|
61
|
-
FileUtils.mkdir_p(@dir)
|
62
|
-
AnnotateModels.model_dir = @dir
|
63
|
-
create('foo.rb', <<-EOS)
|
64
|
-
class Foo < ActiveRecord::Base
|
65
|
-
end
|
66
|
-
EOS
|
67
|
-
create('foo_with_macro.rb', <<-EOS)
|
68
|
-
class FooWithMacro < ActiveRecord::Base
|
69
|
-
acts_as_awesome :yah
|
70
|
-
end
|
71
|
-
EOS
|
72
|
-
create('foo_with_capitals.rb', <<-EOS)
|
73
|
-
class FooWithCAPITALS < ActiveRecord::Base
|
74
|
-
acts_as_awesome :yah
|
75
|
-
end
|
76
|
-
EOS
|
77
|
-
end
|
78
|
-
it "should work" do
|
79
|
-
klass = AnnotateModels.get_model_class("foo.rb")
|
80
|
-
klass.name.should == "Foo"
|
81
|
-
end
|
82
|
-
it "should not care about unknown macros" do
|
83
|
-
klass = AnnotateModels.get_model_class("foo_with_macro.rb")
|
84
|
-
klass.name.should == "FooWithMacro"
|
85
|
-
end
|
86
|
-
it "should find models with non standard capitalization" do
|
87
|
-
klass = AnnotateModels.get_model_class("foo_with_capitals.rb")
|
88
|
-
klass.name.should == "FooWithCAPITALS"
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
end
|