/
datamapper_rails_templates.rb
114 lines (92 loc) · 2.75 KB
/
datamapper_rails_templates.rb
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
# inspired by http://www.rowtheboat.com/archives/32
###################################################
# get all datamapper related gems
gem 'addressable', :lib => 'addressable/uri'
# assume sqlite3 to be database
gem 'do_sqlite3'
# assume you want to have validations and timestamps in your models
gem 'dm-validations'
gem 'dm-timestamps'
gem 'dm-migrations'
gem 'dm-serializer' # to allow xml interface to work
# assume you prefer rspec over unit tests
gem 'rspec', :lib => false
gem 'rspec-rails', :lib => false
# this pulls in rails_datamapper and rack_datamapper
gem 'datamapper4rails'
# install all gems
rake 'gems:install'
# install specs rake tasks
generate('rspec', '-f')
# install datamapper rake tasks
generate('datamapper_install')
# fix config files to work with datamapper instead of active_record
environment ''
environment 'config.frameworks -= [ :active_record ]'
environment '# deactive active_record'
gsub_file 'spec/spec_helper.rb', /^\s*config[.]/, ' #\0'
gsub_file 'test/test_helper.rb', /^[^#]*fixtures/, ' #\0'
file 'spec/support/datamapper.rb', <<-CODE
require 'datamapper4rails/rspec'
CODE
# add middleware
def middleware(name)
log 'middleware', name
environment "config.middleware.use '#{name}'"
end
environment ''
middleware 'DataMapper::RestfulTransactions'
middleware 'DataMapper::IdentityMaps'
middleware 'Rack::Deflater'
environment '# add middleware'
# init a session store
initializer 'datamapper_store.rb', <<-CODE
# init a session store which uses a memory cache and a persistent store
# cleanup can be a problem. jruby uses soft-references for the cache so
# memory cleanup with jruby is not a problem.
require 'ixtlan/session'
ActionController::Base.session_store = :datamapper_store
ActionController::Base.session = {
:cache => true,
}
CODE
# gzip fix for jruby
initializer 'monkey_patches.rb', <<-CODE
if RUBY_PLATFORM =~ /java/
require 'zlib'
class Zlib::GzipWriter
def <<(arg)
write(arg)
end
end
end
CODE
file 'prepare_jruby.sh', <<-CODE
#!/bin/bash
echo
echo "shall freeze rails and fix a bug which prevents rails to use certain"
echo "java gems like the dataobjects drivers !!"
echo
mvn --version
if [ $? -ne 0 ] ; then
echo "please install maven >= 2.0.9 from maven.apache.org"
exit -1
fi
mvn de.saumya.mojo:rails-maven-plugin:rails-freeze-gems de.saumya.mojo:rails-maven-plugin:gems-install
echo
echo "you can run rails with (no need to install jruby !!)"
echo
echo "\tmvn de.saumya.mojo:rails-maven-plugin:server"
echo
echo "more info on"
echo "\thttp://github.org/mkristian/rails-maven-plugin"
echo
echo
CODE
rake 'db:sessions:create'
logger.info
logger.info
logger.info "info mavenized rails application"
logger.info "\thttp://github.org/mkristian/rails-maven-plugin"
logger.info
logger.info