decoct 0.1.0

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/README.markdown ADDED
@@ -0,0 +1,43 @@
1
+ Decoct: Quick start Sinatra with Rspec
2
+ =====================================
3
+
4
+ Decoct is a simple gem that creates a sinatra app directory structure and hooks it up with Rspec.
5
+
6
+ Installing
7
+ ---------
8
+
9
+ Install the gem: sudo gem install andhapp-decoct -s http://gems.github.com (on Mac)
10
+
11
+ Dependencies
12
+ -----------
13
+
14
+ The gem depends on the following libraries:
15
+
16
+ * rspec
17
+ * ZenTest
18
+ * redgreen
19
+ * rcov
20
+
21
+ growl is the Mac OS X messaging system and there are a plethora of articles detailing its installation. Google 'growl Mac OS X' and you would definitely encounter some useful results.
22
+
23
+ Usage
24
+ ----
25
+
26
+ Assuming that you have installed the gem. Use the command line and go to the directory where you would like to create
27
+ the new project and run the following command:
28
+
29
+ decoct {project-name}
30
+
31
+ This would create a sinatra project with all the rspec dependencies. If a directory with the same name exists it will
32
+ overwrite it. Just go into the directory on your command line and run the following command:
33
+
34
+ RSPEC=true autotest
35
+
36
+ Tests
37
+ ---
38
+
39
+ In order to run the test, please do ruby -rubygems test/decoct/ts_script.rb which makes the test independent of rubygems.
40
+
41
+ Roadmap
42
+ ---
43
+ To move the gem to gemcutter
data/Rakefile ADDED
@@ -0,0 +1,32 @@
1
+ # sinatra-rspec
2
+
3
+ %W{rake rake/testtask rake/rdoctask rcov/rcovtask}.each{|x| require x}
4
+
5
+ begin
6
+ require 'jeweler'
7
+ Jeweler::Tasks.new do |gem|
8
+ gem.name = "decoct"
9
+ gem.summary = "Its a simple gem which creates a project structure for sinatra to work with rspec, ZenTest, RedGreen, Rcov"
10
+ gem.email = "anuj@andhapp.com"
11
+ gem.homepage = "http://github.com/andhapp/decoct"
12
+ gem.description = "Sinatra Rspec project generator"
13
+ gem.authors = ["Anuj Dutta"]
14
+ gem.add_dependency 'rspec'
15
+ gem.add_dependency 'ZenTest'
16
+ gem.add_dependency 'redgreen'
17
+ gem.add_dependency 'rcov'
18
+ end
19
+ Jeweler::GemcutterTasks.new
20
+ rescue LoadError
21
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
22
+ end
23
+
24
+ desc "rake task to run all the tests"
25
+ Rake::TestTask.new do |t|
26
+ t.libs << "lib"
27
+ t.test_files = FileList['test/**/ts_*.rb']
28
+ t.verbose = true
29
+ t.ruby_opts = ['-rubygems']
30
+ end
31
+
32
+ task :default => [:test]
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
data/bin/decoct ADDED
@@ -0,0 +1,7 @@
1
+ app_path = ARGV.first
2
+
3
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
4
+ require 'decoct'
5
+
6
+ decoct = Decoct::Dscript.new(app_path)
7
+ decoct.run
@@ -0,0 +1,9 @@
1
+ module Decoct
2
+ module Dconstants
3
+ LIB = 'lib'
4
+ VIEWS = 'views'
5
+ SPEC = 'spec'
6
+ PUBLIC = 'public'
7
+ TEMPLATES = File.join(File.dirname(__FILE__), "..", '..', 'lib', 'templates') + File::SEPARATOR.to_s
8
+ end
9
+ end
@@ -0,0 +1,35 @@
1
+ require 'ftools'
2
+
3
+ module Decoct
4
+ module Dmeta
5
+
6
+ include Decoct::Dconstants
7
+
8
+ def copy_file(from, to)
9
+ if from.is_a?(Array) && to.is_a?(Array)
10
+ from.each_index {|i| copy_file(from[i], to[i])}
11
+ else
12
+ File.copy(Dconstants::TEMPLATES + from, to)
13
+ end
14
+ end
15
+
16
+ module ClassMethods
17
+ def create_dir(name)
18
+ if name.is_a?(Array)
19
+ name.map {|x| create_dir(x)}
20
+ else
21
+ define_method("create_#{name}") do
22
+ path = "#{@app_name}#{File::SEPARATOR}#{name}"
23
+ Dir.mkdir(path) if !test(?d, path)
24
+ puts "Created #{path}"
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ def self.included(host_class)
31
+ host_class.extend(ClassMethods)
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,54 @@
1
+ module Decoct
2
+
3
+ class Dscript
4
+
5
+ include Decoct::Dmeta
6
+
7
+ attr_accessor :app_name
8
+
9
+ create_dir [:lib, :spec, :views, :public, :icons]
10
+
11
+ def initialize(app_name)
12
+ fail "app name cannot be nil or empty!!!" if app_name.eql?(nil) || app_name.empty?
13
+ @app_name = app_name
14
+ end
15
+
16
+ def run
17
+ create_app_dir
18
+ create_lib
19
+ create_spec
20
+ create_views
21
+ create_public
22
+ copy_autotest_file
23
+ copy_rspec_files
24
+ copy_app_file
25
+ end
26
+
27
+ def create_app_dir
28
+ Dir.mkdir("#{app_name}") if !test(?d, "#{app_name}")
29
+ puts "\nCreated application directory - #{app_name}"
30
+ end
31
+
32
+ def copy_autotest_file
33
+ copy_file(".autotest", "#{app_name}#{File::SEPARATOR}.autotest")
34
+ puts "\nCopied autotest files"
35
+ end
36
+
37
+ def copy_rspec_files
38
+ from = ["spec#{File::SEPARATOR}spec.opts", "spec#{File::SEPARATOR}rcov.opts", "spec#{File::SEPARATOR}spec_helper.rb", "spec#{File::SEPARATOR}app_spec.rb"]
39
+ to = ["#{app_name}#{File::SEPARATOR}spec#{File::SEPARATOR}spec.opts", "#{app_name}#{File::SEPARATOR}spec#{File::SEPARATOR}rcov.opts", "#{app_name}#{File::SEPARATOR}spec#{File::SEPARATOR}spec_helper.rb", "#{app_name}#{File::SEPARATOR}spec#{File::SEPARATOR}#{app_name}_spec.rb"]
40
+ copy_file(from, to)
41
+
42
+ file_string = File.open("#{app_name}#{File::SEPARATOR}spec#{File::SEPARATOR}spec_helper.rb") {|f| f.readlines.unshift("require '#{app_name}'\n").join }
43
+ File.open("#{app_name}#{File::SEPARATOR}spec#{File::SEPARATOR}spec_helper.rb", "w") {|f| f << file_string}
44
+ puts "\nCopied rspec files"
45
+ end
46
+
47
+ def copy_app_file
48
+ copy_file("generic_app.rb", "#{app_name}#{File::SEPARATOR}#{app_name}.rb")
49
+ puts "\nCopied application file"
50
+ end
51
+
52
+ end
53
+
54
+ end
data/lib/decoct.rb ADDED
@@ -0,0 +1,5 @@
1
+ $: << File.join(File.dirname(__FILE__), "..", "lib")
2
+
3
+ require 'decoct/dconstants'
4
+ require 'decoct/dmeta'
5
+ require 'decoct/dscript'
@@ -0,0 +1,2 @@
1
+
2
+ require "rubygems"
@@ -0,0 +1,7 @@
1
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../sinatra/lib'
2
+
3
+ %w{sinatra}.each {|x| require x}
4
+
5
+ get '/' do
6
+ 'It works!!!'
7
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.dirname(__FILE__) << '/spec_helper.rb')
2
+
3
+ describe 'App' do
4
+ it "should pick the main app file and run the spec" do
5
+ get '/'
6
+ last_response.should be_ok
7
+ last_response.body.should == 'It works!!!'
8
+ end
9
+ end
@@ -0,0 +1 @@
1
+ --exclude "spec/*,gems/*"
@@ -0,0 +1,4 @@
1
+ --colour
2
+ --format progress
3
+ --loadby mtime
4
+ --reverse
@@ -0,0 +1,12 @@
1
+ %w{spec spec/autorun spec/interop/test rack/test}.each {|x| require x}
2
+
3
+ set :environment, :test
4
+
5
+ module AppHelper
6
+ include Rack::Test::Methods
7
+ def app; Sinatra::Application; end
8
+ end
9
+
10
+ Spec::Runner.configure do |config|
11
+ config.include AppeHelper
12
+ end
@@ -0,0 +1,76 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
+
3
+ class TestScript < Test::Unit::TestCase
4
+
5
+ def dir_in_app_folder
6
+ Dir.entries("epoxys").each {|x| [] << x if !File.directory?(x)}
7
+ end
8
+
9
+ context "Creation - sinatra-rspec app" do
10
+ setup do
11
+ @script = Decoct::Dscript.new('epoxys')
12
+ @app_name = @script.app_name
13
+ @script.create_app_dir
14
+ end
15
+
16
+ should 'create the app directory' do
17
+ assert File.exists?(@app_name)
18
+ end
19
+
20
+ should 'create a directory called lib' do
21
+ @script.create_lib
22
+ assert_not_nil dir_in_app_folder.index("lib")
23
+ end
24
+
25
+ should 'create a directory called spec and copy the rspec files' do
26
+ @script.create_spec
27
+ @script.copy_rspec_files
28
+
29
+ assert File.exists?("#{@app_name}#{File::SEPARATOR}spec#{File::SEPARATOR}spec.opts")
30
+ assert File.exists?("#{@app_name}#{File::SEPARATOR}spec#{File::SEPARATOR}rcov.opts")
31
+ assert File.exists?("#{@app_name}#{File::SEPARATOR}spec#{File::SEPARATOR}spec_helper.rb")
32
+ assert File.exists?("#{@app_name}#{File::SEPARATOR}spec#{File::SEPARATOR}#{@app_name}_spec.rb")
33
+
34
+ assert File.open("#{@app_name}#{File::SEPARATOR}spec#{File::SEPARATOR}spec_helper.rb").readline == "require '#{@script.app_name}'\n"
35
+ assert_not_nil dir_in_app_folder.index("spec")
36
+ end
37
+
38
+ should 'create a directory called views' do
39
+ @script.create_views
40
+ assert_not_nil dir_in_app_folder.index("views")
41
+ end
42
+
43
+ should 'create a directory called public' do
44
+ @script.create_public
45
+ assert_not_nil dir_in_app_folder.index("public")
46
+ end
47
+
48
+ should 'copy the .autotest file to app folder' do
49
+ @script.copy_autotest_file
50
+ assert File.exists?("#{@app_name}#{File::SEPARATOR}.autotest")
51
+ end
52
+
53
+ should 'copy the app file' do
54
+ @script.copy_app_file
55
+ assert File.exists?("#{@app_name}#{File::SEPARATOR}#{@app_name}.rb")
56
+ end
57
+
58
+ teardown do
59
+ FileUtils.rmtree @app_name
60
+ end
61
+
62
+ end
63
+
64
+ context "Exceptions" do
65
+
66
+ should 'raise an error if there is app_name is empty' do
67
+ assert_raises(RuntimeError) {Decoct::Dscript.new('')}
68
+ end
69
+
70
+ should 'raise an error if there is app_name is nil' do
71
+ assert_raises(RuntimeError) {Decoct::Dscript.new(nil)}
72
+ end
73
+
74
+ end
75
+
76
+ end
@@ -0,0 +1,2 @@
1
+ %w(redgreen test/unit shoulda fileutils).each{|x| require x}
2
+ require File.join(File.dirname(__FILE__), "..", "lib", "decoct")
metadata ADDED
@@ -0,0 +1,110 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: decoct
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Anuj Dutta
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-22 00:00:00 +05:30
13
+ default_executable: decoct
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: ZenTest
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: redgreen
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: rcov
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ description: Sinatra Rspec project generator
56
+ email: anuj@andhapp.com
57
+ executables:
58
+ - decoct
59
+ extensions: []
60
+
61
+ extra_rdoc_files:
62
+ - README.markdown
63
+ files:
64
+ - README.markdown
65
+ - Rakefile
66
+ - VERSION
67
+ - bin/decoct
68
+ - lib/decoct.rb
69
+ - lib/decoct/dconstants.rb
70
+ - lib/decoct/dmeta.rb
71
+ - lib/decoct/dscript.rb
72
+ - lib/templates/.autotest
73
+ - lib/templates/generic_app.rb
74
+ - lib/templates/spec/app_spec.rb
75
+ - lib/templates/spec/rcov.opts
76
+ - lib/templates/spec/spec.opts
77
+ - lib/templates/spec/spec_helper.rb
78
+ - test/decoct/ts_script.rb
79
+ - test/test_helper.rb
80
+ has_rdoc: true
81
+ homepage: http://github.com/andhapp/decoct
82
+ licenses: []
83
+
84
+ post_install_message:
85
+ rdoc_options:
86
+ - --charset=UTF-8
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: "0"
94
+ version:
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: "0"
100
+ version:
101
+ requirements: []
102
+
103
+ rubyforge_project:
104
+ rubygems_version: 1.3.5
105
+ signing_key:
106
+ specification_version: 3
107
+ summary: Its a simple gem which creates a project structure for sinatra to work with rspec, ZenTest, RedGreen, Rcov
108
+ test_files:
109
+ - test/decoct/ts_script.rb
110
+ - test/test_helper.rb