-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rakefile
191 lines (153 loc) · 4.94 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
require 'yaml'
require 'logger'
require 'active_record'
def camel_case( string )
return string if (string !~ /_/) && (string =~ /[A-Z]+.*/)
string.split('_').map{|e| e.capitalize}.join
end
desc "Start yard doc server"
task :yard do
`rm -rf .yardoc && yard server --reload`
end
desc "Run ctags"
task :tag do
`ctags -R --exclude=.git --exclude=log -o=.tags *`
end
desc "Pull the latest version from repository"
task :pull do
`git pull origin`
end
task :load do
require_relative 'lib/insectdb'
end
namespace :env do
task :test do
ENV['ENV'] = 'test'
end
task :production do
ENV['ENV'] = 'production'
end
task :dev do
ENV['ENV'] = 'development'
end
end
task :test => ['env:test', 'db:configure_connection'] do
require 'autotest'
Autotest.parse_options()
Autotest.runner.run
end
namespace :i do
task :dev => ['env:dev', 'db:configure_connection', 'irb']
task :pro => ['env:production', 'db:configure_connection', 'irb']
task :test => ['env:test', 'db:configure_connection', 'irb']
task :irb do
require 'irb'
require_relative 'lib/insectdb'
ARGV.clear
IRB.start
end
end
namespace :db do
task :environment do
ENV['DATABASE_ENV'] = ENV['ENV'] || 'production'
MIGRATIONS_DIR = 'db/migrate'
end
task :configuration => :environment do
@config = YAML.load_file('config/database.yml')[ENV['DATABASE_ENV']]
end
task :configure_connection => :configuration do
ActiveRecord::Base.establish_connection @config
ActiveRecord::Base.logger = Logger.new STDOUT if @config['logger']
end
task :maintenance_connection => :configuration do
@config['maintenance_db'] = @config['database']
@config['database'] = 'postgres'
ActiveRecord::Base.establish_connection @config
ActiveRecord::Base.logger = Logger.new STDOUT if @config['logger']
end
desc 'Create the database from config/database.yml for the current DATABASE_ENV'
task :create => :configure_connection do
options = {:charset => 'utf8', :collation => 'utf8_unicode_ci'}
ActiveRecord::Base.establish_connection(@config.merge('database' => nil))
ActiveRecord::Base.connection.create_database(@config['database'], options)
ActiveRecord::Base.establish_connection(@config)
end
desc 'Drops the database for the current DATABASE_ENV'
task :drop => :maintenance_connection do
ActiveRecord::Base.connection.drop_database @config['maintenance_db']
end
desc 'Create new migration'
task :create_migration, :name do |t, args|
filename = Time.now.strftime("%Y%m%d%H%M%S") + "_" + args[:name]
File.open("db/migrate/#{filename}.rb",'w') do |f|
f << "class #{camel_case(args[:name])} < ActiveRecord::Migration\nend"
end
end
desc 'Migrate the database (options: VERSION=x, VERBOSE=false).'
task :migrate => :configure_connection do
ActiveRecord::Migration.verbose = true
ActiveRecord::Migrator.migrate(MIGRATIONS_DIR, ENV['VERSION'] ? ENV['VERSION'].to_i : nil)
end
desc 'Rolls the schema back to the previous version (specify steps w/ STEP=n).'
task :rollback, [:steps] => :configure_connection do |t, args|
args.with_defaults(:steps => 1)
step = args[:steps].to_i
ActiveRecord::Migrator.rollback MIGRATIONS_DIR, step
end
desc "Retrieves the current schema version number"
task :version => :configure_connection do
puts "Current version: #{ActiveRecord::Migrator.current_version}"
end
namespace :seed do
task :seqs => ['load', 'configure_connection'] do
Insectdb::Seed.seqs
end
task :segments => ['load', 'configure_connection'] do
Insectdb::Seed.segments
end
task :mrnas => ['load', 'configure_connection'] do
Insectdb::Seed.mrnas
end
task :genes => ['load', 'configure_connection'] do
Insectdb::Seed.genes
end
task :mrnas_segments => ['load', 'configure_connection'] do
Insectdb::Seed.mrnas_segments
end
task :genes_mrnas => ['load', 'configure_connection'] do
Insectdb::Seed.genes_mrnas
end
task :clean_segments => ['load', 'configure_connection'] do
Insectdb::Segment.clean
end
task :clean_mrnas => ['load', 'configure_connection'] do
Insectdb::Mrna.clean
end
task :set_ref_seqs => ['load', 'configure_connection'] do
Insectdb::Mrna.set_ref_seq
end
task :all => ['load',
'segments',
'seqs',
'mrnas',
'genes',
'mrnas_segments',
'genes_mrnas',
'clean_segments',
'clean_mrnas',
'set_ref_seqs'
]
end
namespace :test do
desc "Drop test DB"
task :drop => ['env:test', 'db:drop']
desc "Create & Migrate test DB"
task :prepare => ['env:test', 'db:create', 'db:migrate']
end
namespace :dev do
desc "Drop dev DB"
task :drop => ['env:dev', 'db:drop']
desc "Create & Migrate dev DB"
task :prepare => ['env:dev', 'db:create', 'db:migrate']
end
end