rda 0.0.1
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/.gitignore +9 -0
- data/.rspec +2 -0
- data/Gemfile +17 -0
- data/Gemfile.lock +137 -0
- data/Guardfile +12 -0
- data/MIT-LICENSE +20 -0
- data/README.textile +113 -0
- data/Rakefile +26 -0
- data/lib/rda/app.rb +11 -0
- data/lib/rda/nginx.rb +101 -0
- data/lib/rda/rails.rb +7 -0
- data/lib/rda/railtie.rb +9 -0
- data/lib/rda/rvm.rb +48 -0
- data/lib/rda/templates/nginx +6 -0
- data/lib/rda/templates/rvmrc +5 -0
- data/lib/rda/version.rb +3 -0
- data/lib/rda.rb +23 -0
- data/lib/tasks/rda_tasks.rake +38 -0
- data/rda.gemspec +34 -0
- data/rvmrc.example +1 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +7 -0
- data/spec/dummy/app/assets/stylesheets/application.css +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/mailers/.gitkeep +0 -0
- data/spec/dummy/app/models/.gitkeep +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config/application.rb +51 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +30 -0
- data/spec/dummy/config/environments/production.rb +60 -0
- data/spec/dummy/config/environments/test.rb +39 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/rda.rb +3 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +10 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +58 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/lib/assets/.gitkeep +0 -0
- data/spec/dummy/log/.gitkeep +0 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/fixtures/nginx.conf +2 -0
- data/spec/lib/rda/app_spec.rb +13 -0
- data/spec/lib/rda/nginx_spec.rb +124 -0
- data/spec/lib/rda/rails_spec.rb +7 -0
- data/spec/lib/rda/rvm_spec.rb +55 -0
- data/spec/lib/rda_spec.rb +20 -0
- data/spec/spec_helper.rb +30 -0
- metadata +247 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
# Declare your gem's dependencies in rda.gemspec.
|
4
|
+
# Bundler will treat runtime dependencies like base dependencies, and
|
5
|
+
# development dependencies will be added by default to the :development group.
|
6
|
+
gemspec
|
7
|
+
|
8
|
+
# jquery-rails is used by the dummy application
|
9
|
+
gem "jquery-rails"
|
10
|
+
|
11
|
+
# Declare any dependencies that are still in development here instead of in
|
12
|
+
# your gemspec. These might include edge Rails or gems from your path or
|
13
|
+
# Git. Remember to move these dependencies to your gemspec before releasing
|
14
|
+
# your gem to rubygems.org.
|
15
|
+
|
16
|
+
# To use debugger
|
17
|
+
# gem 'ruby-debug19', :require => 'ruby-debug'
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
rda (0.0.1)
|
5
|
+
confstruct
|
6
|
+
rails (~> 3.1.3)
|
7
|
+
thor
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: http://rubygems.org/
|
11
|
+
specs:
|
12
|
+
actionmailer (3.1.3)
|
13
|
+
actionpack (= 3.1.3)
|
14
|
+
mail (~> 2.3.0)
|
15
|
+
actionpack (3.1.3)
|
16
|
+
activemodel (= 3.1.3)
|
17
|
+
activesupport (= 3.1.3)
|
18
|
+
builder (~> 3.0.0)
|
19
|
+
erubis (~> 2.7.0)
|
20
|
+
i18n (~> 0.6)
|
21
|
+
rack (~> 1.3.5)
|
22
|
+
rack-cache (~> 1.1)
|
23
|
+
rack-mount (~> 0.8.2)
|
24
|
+
rack-test (~> 0.6.1)
|
25
|
+
sprockets (~> 2.0.3)
|
26
|
+
activemodel (3.1.3)
|
27
|
+
activesupport (= 3.1.3)
|
28
|
+
builder (~> 3.0.0)
|
29
|
+
i18n (~> 0.6)
|
30
|
+
activerecord (3.1.3)
|
31
|
+
activemodel (= 3.1.3)
|
32
|
+
activesupport (= 3.1.3)
|
33
|
+
arel (~> 2.2.1)
|
34
|
+
tzinfo (~> 0.3.29)
|
35
|
+
activeresource (3.1.3)
|
36
|
+
activemodel (= 3.1.3)
|
37
|
+
activesupport (= 3.1.3)
|
38
|
+
activesupport (3.1.3)
|
39
|
+
multi_json (~> 1.0)
|
40
|
+
arel (2.2.1)
|
41
|
+
builder (3.0.0)
|
42
|
+
coderay (0.9.8)
|
43
|
+
confstruct (0.2.0)
|
44
|
+
diff-lcs (1.1.3)
|
45
|
+
erubis (2.7.0)
|
46
|
+
ffi (1.0.11)
|
47
|
+
guard (0.10.0)
|
48
|
+
ffi (>= 0.5.0)
|
49
|
+
thor (~> 0.14.6)
|
50
|
+
guard-bundler (0.1.3)
|
51
|
+
bundler (>= 1.0.0)
|
52
|
+
guard (>= 0.2.2)
|
53
|
+
guard-rspec (0.6.0)
|
54
|
+
guard (>= 0.10.0)
|
55
|
+
hike (1.2.1)
|
56
|
+
i18n (0.6.0)
|
57
|
+
jquery-rails (1.0.19)
|
58
|
+
railties (~> 3.0)
|
59
|
+
thor (~> 0.14)
|
60
|
+
json (1.6.5)
|
61
|
+
mail (2.3.0)
|
62
|
+
i18n (>= 0.4.0)
|
63
|
+
mime-types (~> 1.16)
|
64
|
+
treetop (~> 1.4.8)
|
65
|
+
method_source (0.6.7)
|
66
|
+
ruby_parser (>= 2.3.1)
|
67
|
+
mime-types (1.17.2)
|
68
|
+
multi_json (1.0.4)
|
69
|
+
polyglot (0.3.3)
|
70
|
+
pry (0.9.7.4)
|
71
|
+
coderay (~> 0.9.8)
|
72
|
+
method_source (~> 0.6.7)
|
73
|
+
ruby_parser (>= 2.3.1)
|
74
|
+
slop (~> 2.1.0)
|
75
|
+
rack (1.3.6)
|
76
|
+
rack-cache (1.1)
|
77
|
+
rack (>= 0.4)
|
78
|
+
rack-mount (0.8.3)
|
79
|
+
rack (>= 1.0.0)
|
80
|
+
rack-ssl (1.3.2)
|
81
|
+
rack
|
82
|
+
rack-test (0.6.1)
|
83
|
+
rack (>= 1.0)
|
84
|
+
rails (3.1.3)
|
85
|
+
actionmailer (= 3.1.3)
|
86
|
+
actionpack (= 3.1.3)
|
87
|
+
activerecord (= 3.1.3)
|
88
|
+
activeresource (= 3.1.3)
|
89
|
+
activesupport (= 3.1.3)
|
90
|
+
bundler (~> 1.0)
|
91
|
+
railties (= 3.1.3)
|
92
|
+
railties (3.1.3)
|
93
|
+
actionpack (= 3.1.3)
|
94
|
+
activesupport (= 3.1.3)
|
95
|
+
rack-ssl (~> 1.3.2)
|
96
|
+
rake (>= 0.8.7)
|
97
|
+
rdoc (~> 3.4)
|
98
|
+
thor (~> 0.14.6)
|
99
|
+
rake (0.9.2.2)
|
100
|
+
rdoc (3.12)
|
101
|
+
json (~> 1.4)
|
102
|
+
rspec (2.8.0)
|
103
|
+
rspec-core (~> 2.8.0)
|
104
|
+
rspec-expectations (~> 2.8.0)
|
105
|
+
rspec-mocks (~> 2.8.0)
|
106
|
+
rspec-core (2.8.0)
|
107
|
+
rspec-expectations (2.8.0)
|
108
|
+
diff-lcs (~> 1.1.2)
|
109
|
+
rspec-mocks (2.8.0)
|
110
|
+
ruby_gntp (0.3.4)
|
111
|
+
ruby_parser (2.3.1)
|
112
|
+
sexp_processor (~> 3.0)
|
113
|
+
sexp_processor (3.0.10)
|
114
|
+
slop (2.1.0)
|
115
|
+
sprockets (2.0.3)
|
116
|
+
hike (~> 1.2)
|
117
|
+
rack (~> 1.0)
|
118
|
+
tilt (~> 1.1, != 1.3.0)
|
119
|
+
thor (0.14.6)
|
120
|
+
tilt (1.3.3)
|
121
|
+
treetop (1.4.10)
|
122
|
+
polyglot
|
123
|
+
polyglot (>= 0.3.1)
|
124
|
+
tzinfo (0.3.31)
|
125
|
+
|
126
|
+
PLATFORMS
|
127
|
+
ruby
|
128
|
+
|
129
|
+
DEPENDENCIES
|
130
|
+
guard
|
131
|
+
guard-bundler
|
132
|
+
guard-rspec
|
133
|
+
jquery-rails
|
134
|
+
pry
|
135
|
+
rda!
|
136
|
+
rspec
|
137
|
+
ruby_gntp
|
data/Guardfile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
group "backend" do
|
2
|
+
guard :bundler do
|
3
|
+
watch('Gemfile')
|
4
|
+
end
|
5
|
+
|
6
|
+
guard :rspec, version: 2, cli: '--color --format doc' do
|
7
|
+
watch(%r{^spec/.+_spec\.rb$})
|
8
|
+
watch(%r{^spec/.+\.rb$}) { `say hello` }
|
9
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
10
|
+
watch('spec/spec_helper.rb') { "spec" }
|
11
|
+
end
|
12
|
+
end
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2012 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.textile
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
h1. Rda
|
2
|
+
|
3
|
+
h2. Description
|
4
|
+
|
5
|
+
Rda(Rails Development Assist) is combined with lots of useful rake tasks which can help you to setup your development enviroments and tools more quickly.
|
6
|
+
|
7
|
+
h2. Features
|
8
|
+
|
9
|
+
* Setup RVM for your rails application
|
10
|
+
* Deploy your rails application to Nginx (rails_env is set to development by default)
|
11
|
+
* Release your rails application
|
12
|
+
|
13
|
+
h2. Usage
|
14
|
+
|
15
|
+
h3. Installation
|
16
|
+
|
17
|
+
<code>gem install rda</code>
|
18
|
+
|
19
|
+
Or simply add rda to the Gemfile
|
20
|
+
|
21
|
+
<code>gem 'rda'</code>
|
22
|
+
|
23
|
+
h3. Configuration
|
24
|
+
|
25
|
+
For configuring rda, you should create an initialize for rda:
|
26
|
+
|
27
|
+
<pre>
|
28
|
+
<code>
|
29
|
+
# config/initializers/rda.rb
|
30
|
+
Rda.configure do
|
31
|
+
nginx_conf_paths ['/etc/nginx', '/opt/nginx/conf', '/usr/local/nginx/conf']
|
32
|
+
end
|
33
|
+
</code>
|
34
|
+
</pre>
|
35
|
+
|
36
|
+
h3. Setup RVM
|
37
|
+
|
38
|
+
<code>rake rda:rvm:setup</code>
|
39
|
+
|
40
|
+
First of all, this task will check whether the RVM is installed. If RVM is installed, it will create a .rvmrc for the application with the content which looks like:
|
41
|
+
|
42
|
+
<pre>
|
43
|
+
<code>
|
44
|
+
if [[ -s "/path/to/rvm/environments/ruby-1.9.3-p0@app_name" ]]; then
|
45
|
+
. "/path/to/rvm/environments/ruby-1.9.3-p0@app_name"
|
46
|
+
else
|
47
|
+
rvm use ruby-1.9.3-p0@app_name --create
|
48
|
+
fi
|
49
|
+
</code>
|
50
|
+
</pre>
|
51
|
+
|
52
|
+
If RVM is not installed this task will do nothing but exit.
|
53
|
+
|
54
|
+
h3. Discard RVM settings
|
55
|
+
|
56
|
+
<code>rake rda:rvm:discard</code>
|
57
|
+
|
58
|
+
This task removes the .rvmrc from your rails application.
|
59
|
+
|
60
|
+
h3. Setup Nginx
|
61
|
+
|
62
|
+
<code>rake rda:nginx:setup</code>
|
63
|
+
|
64
|
+
First this task will try to find the config files of Nginx which you have installed from the following paths:
|
65
|
+
|
66
|
+
* /etc/nginx
|
67
|
+
* /usr/local/nginx/conf
|
68
|
+
* /opt/nginx/conf
|
69
|
+
|
70
|
+
You can change the default searching paths by:
|
71
|
+
|
72
|
+
<pre>
|
73
|
+
<code>
|
74
|
+
Rda.configure { nginx_conf_paths ['/path/to/nginx/conf'] }
|
75
|
+
</code>
|
76
|
+
</pre>
|
77
|
+
|
78
|
+
Please make sure that you have the write permission of the directory you choosed, or you can run:
|
79
|
+
|
80
|
+
<code>sudo rake rda:nginx:setup</code>
|
81
|
+
|
82
|
+
If there are more than one paths found, it will give you a choice to decide which one will be used. After choosing a proper path, it will try to create two directories sites-available and sites-enabled to save the configs of rails applications.
|
83
|
+
|
84
|
+
* sites-available saves the configs of the rails applications.
|
85
|
+
* sites-enabled saves the link to the rails applications.
|
86
|
+
|
87
|
+
Next it will set Nginx to include the configs under sites-enabled. It means that only the applications under sites-enabled will be loaded. And than it will create a config file for your application under sites-available and create a link to the config file under sites-enabled. After all, it will create a local hostname for your application in /etc/hosts.
|
88
|
+
|
89
|
+
h3. Discard Nginx settings
|
90
|
+
|
91
|
+
<code>
|
92
|
+
rake rda:nginx:discard # Or
|
93
|
+
|
94
|
+
sudo rake rda:nginx:discard # Or
|
95
|
+
|
96
|
+
rvmsudo rake rda:nginx:discard # Using RVM
|
97
|
+
</code>
|
98
|
+
|
99
|
+
This task will clean up all the things created or configured by rda:nginx:setup.
|
100
|
+
|
101
|
+
h3. Restart application
|
102
|
+
|
103
|
+
<code> rake rda:app:restart</code>
|
104
|
+
|
105
|
+
This task touches tmp/restart.txt to restart your rails application, For detail, please visit http://modrails.com/documentation/Users%20guide%20Nginx.html#_redeploying_restarting_the_ruby_on_rails_application
|
106
|
+
|
107
|
+
h3. Release your rails application(not yet)
|
108
|
+
|
109
|
+
<code> rake rda:app:release</code>
|
110
|
+
|
111
|
+
h2. License
|
112
|
+
|
113
|
+
This project rocks and uses MIT-LICENSE.
|
data/Rakefile
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'Rda'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
Bundler::GemHelper.install_tasks
|
26
|
+
|
data/lib/rda/app.rb
ADDED
data/lib/rda/nginx.rb
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
module Rda
|
2
|
+
class Nginx < Thor
|
3
|
+
include Thor::Actions
|
4
|
+
|
5
|
+
DEFAULT_CONF_PATHS = ['/etc/nginx', '/usr/local/nginx/conf', '/opt/nginx/conf']
|
6
|
+
|
7
|
+
def self.source_root
|
8
|
+
File.dirname(__FILE__)
|
9
|
+
end
|
10
|
+
|
11
|
+
desc "Setup", "Deploy rails application to Nginx"
|
12
|
+
def setup
|
13
|
+
return unless installed?
|
14
|
+
|
15
|
+
mkdir_for_sites
|
16
|
+
include_sites_enabled
|
17
|
+
|
18
|
+
template("templates/nginx", "#{conf_path}/sites-available/#{hostname}")
|
19
|
+
link_file("#{conf_path}/sites-available/#{hostname}", "#{conf_path}/sites-enabled/#{hostname}")
|
20
|
+
|
21
|
+
append_file "/etc/hosts", "#{hostname} 127.0.0.1"
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "Discard", "Remove the Nginx setting of rails application"
|
25
|
+
def discard
|
26
|
+
return unless installed?
|
27
|
+
|
28
|
+
%W(enabled available).each do |n|
|
29
|
+
remove_file("#{conf_path}/sites-#{n}/#{hostname}")
|
30
|
+
end
|
31
|
+
|
32
|
+
gsub_file("/etc/hosts", "#{hostname} 127.0.0.1", '')
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
def installed?
|
37
|
+
Dir.exists?(conf_path) if conf_path
|
38
|
+
end
|
39
|
+
|
40
|
+
def conf_path
|
41
|
+
return @conf_path if @conf_path
|
42
|
+
|
43
|
+
if available_paths.empty?
|
44
|
+
prompt_not_found
|
45
|
+
|
46
|
+
return
|
47
|
+
end
|
48
|
+
|
49
|
+
@conf_path = available_paths.first
|
50
|
+
begin
|
51
|
+
@conf_path = ask_for_choosing_one if available_paths.size > 1
|
52
|
+
rescue SystemExit
|
53
|
+
$stderr.puts "ERROR: You need to choose a config directory of Nginx!"
|
54
|
+
return
|
55
|
+
end
|
56
|
+
|
57
|
+
@conf_path
|
58
|
+
end
|
59
|
+
|
60
|
+
def hostname
|
61
|
+
"#{Rda::Rails.app_name}.local"
|
62
|
+
end
|
63
|
+
|
64
|
+
def available_paths
|
65
|
+
search_paths = Rda.config.nginx_conf_paths || []
|
66
|
+
search_paths = DEFAULT_CONF_PATHS if search_paths.empty?
|
67
|
+
@paths ||= search_paths.select { |p| Dir.exists? p if p } unless search_paths.empty?
|
68
|
+
end
|
69
|
+
|
70
|
+
def prompt_not_found
|
71
|
+
$stderr.puts "Config directory of Nginx is not found in the following paths:\n\n"
|
72
|
+
Rda.config.nginx_conf_paths.each { |p| $stderr.puts "* #{p}" }
|
73
|
+
$stderr.puts "\n"
|
74
|
+
end
|
75
|
+
|
76
|
+
def ask_for_choosing_one
|
77
|
+
available_paths.each_with_index { |p, i| puts "#{i + 1}) #{p}" }
|
78
|
+
puts "\n"
|
79
|
+
chosen = ask "Found more than one config directory of Nginx, please choose one to setup:"
|
80
|
+
|
81
|
+
index = chosen.to_i - 1
|
82
|
+
|
83
|
+
index >= 0 && index < available_paths.size ? available_paths[index] : exit
|
84
|
+
end
|
85
|
+
|
86
|
+
def mkdir_for_sites
|
87
|
+
%W(available enabled).each do |n|
|
88
|
+
dir = conf_path + "/sites-#{n}"
|
89
|
+
empty_directory(dir) unless Dir.exists?(dir)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def include_sites_enabled
|
94
|
+
conf = conf_path + '/nginx.conf'
|
95
|
+
gsub_file conf, /http {/, <<-INCLUDE_SITES_ENABLED
|
96
|
+
http {
|
97
|
+
include #{conf_path}/sites-enabled/*;
|
98
|
+
INCLUDE_SITES_ENABLED
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
data/lib/rda/rails.rb
ADDED
data/lib/rda/railtie.rb
ADDED
data/lib/rda/rvm.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
module Rda
|
2
|
+
class Rvm < Thor
|
3
|
+
include Thor::Actions
|
4
|
+
|
5
|
+
def self.source_root
|
6
|
+
File.dirname(__FILE__)
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "setup", "Setup RVM for rails application"
|
10
|
+
def setup
|
11
|
+
if installed?
|
12
|
+
template('templates/rvmrc', rvmrc_path)
|
13
|
+
else
|
14
|
+
$stderr.puts "ERROR: RVM is not found. Please make sure that RVM is installed."
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "discard", "Discard RVM settings for rails application"
|
19
|
+
def discard
|
20
|
+
if File.exists?(rvmrc_path)
|
21
|
+
remove_file(rvmrc_path)
|
22
|
+
else
|
23
|
+
$stderr.puts "ERROR: #{rvmrc_path} not found."
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
def installed?
|
29
|
+
rvm_path && Dir.exists?(rvm_path)
|
30
|
+
end
|
31
|
+
|
32
|
+
def rvm_path
|
33
|
+
ENV['rvm_path']
|
34
|
+
end
|
35
|
+
|
36
|
+
def gemset_name
|
37
|
+
"ruby-#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}@#{Rda::Rails.app_name}"
|
38
|
+
end
|
39
|
+
|
40
|
+
def gemset_env
|
41
|
+
"#{rvm_path}/environments/#{gemset_name}"
|
42
|
+
end
|
43
|
+
|
44
|
+
def rvmrc_path
|
45
|
+
"#{::Rails.root}/.rvmrc"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/rda/version.rb
ADDED
data/lib/rda.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'rails'
|
2
|
+
require 'thor'
|
3
|
+
require 'confstruct'
|
4
|
+
|
5
|
+
require 'rda/railtie'
|
6
|
+
require 'rda/rails'
|
7
|
+
require 'rda/rvm'
|
8
|
+
require 'rda/nginx'
|
9
|
+
require 'rda/app'
|
10
|
+
|
11
|
+
module Rda
|
12
|
+
@@config = Confstruct::Configuration.new do
|
13
|
+
nginx_conf_paths ['/etc/nginx', '/usr/local/nginx/conf', '/opt/nginx/conf']
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.config
|
17
|
+
@@config
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.configure(&block)
|
21
|
+
@@config.configure(&block)
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
namespace :rda do
|
2
|
+
namespace :rvm do
|
3
|
+
rvm = Rda::Rvm.new
|
4
|
+
|
5
|
+
desc "Setup RVM for rails application"
|
6
|
+
task :setup do
|
7
|
+
rvm.setup
|
8
|
+
end
|
9
|
+
|
10
|
+
desc "Discard RVM settings of rails application"
|
11
|
+
task :discard do
|
12
|
+
rvm.discard
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
namespace :nginx do
|
17
|
+
nginx = Rda::Nginx.new
|
18
|
+
|
19
|
+
desc "Setup Nginx for rails application"
|
20
|
+
task :setup => :environment do
|
21
|
+
nginx.setup
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "Discard Nginx settings of rails application"
|
25
|
+
task :discard => :environment do
|
26
|
+
nginx.discard
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
namespace :app do
|
31
|
+
app = Rda::App.new
|
32
|
+
|
33
|
+
desc "Restart rails application"
|
34
|
+
task :restart do
|
35
|
+
app.restart
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/rda.gemspec
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
# Maintain your gem's version:
|
4
|
+
require "rda/version"
|
5
|
+
|
6
|
+
# Describe your gem and declare its dependencies:
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = "rda"
|
9
|
+
s.version = Rda::VERSION
|
10
|
+
s.authors = ["Tower He"]
|
11
|
+
s.email = ["towerhe@gmail.com"]
|
12
|
+
s.homepage = "https://github.com/towerhe/rda"
|
13
|
+
s.summary = "Rails Development Assist"
|
14
|
+
s.description = "Rda(Rails Development Assist) is combined with lots of useful rake tasks which can help you to setup your development enviroments and tools more quickly."
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
s.add_dependency "rails", "~> 3.1.3"
|
21
|
+
s.add_dependency "thor"
|
22
|
+
s.add_dependency "confstruct"
|
23
|
+
|
24
|
+
s.add_development_dependency "pry"
|
25
|
+
s.add_development_dependency "rspec"
|
26
|
+
s.add_development_dependency "guard"
|
27
|
+
s.add_development_dependency "guard-bundler"
|
28
|
+
s.add_development_dependency "guard-rspec"
|
29
|
+
if RUBY_PLATFORM =~ /darwin/
|
30
|
+
s.add_development_dependency "ruby_gntp"
|
31
|
+
elsif RUBY_PLATFORM =~ /linux/
|
32
|
+
s.add_development_dependency "libnotify"
|
33
|
+
end
|
34
|
+
end
|
data/rvmrc.example
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use 1.9.3@rda --create
|
data/spec/dummy/Rakefile
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
3
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
4
|
+
|
5
|
+
require File.expand_path('../config/application', __FILE__)
|
6
|
+
|
7
|
+
Dummy::Application.load_tasks
|
@@ -0,0 +1,7 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into including all the files listed below.
|
2
|
+
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
|
3
|
+
// be included in the compiled file accessible from http://example.com/assets/application.js
|
4
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
5
|
+
// the compiled file.
|
6
|
+
//
|
7
|
+
//= require_tree .
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
3
|
+
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
4
|
+
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
5
|
+
*= require_self
|
6
|
+
*= require_tree .
|
7
|
+
*/
|
File without changes
|
File without changes
|