medea-generators 0.2.0 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc ADDED
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # adapted from: http://rvm.beginrescueend.com/workflow/rvmrc/
4
+
5
+ ruby_string="1.9.2"
6
+ gemset_name="medea-generators"
7
+
8
+ if rvm list strings | grep -q "${ruby_string}" ; then
9
+
10
+ # Load or create the specified environment
11
+ if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
12
+ && -s "${rvm_path:-$HOME/.rvm}/environments/${ruby_string}@${gemset_name}" ]] ; then
13
+ \. "${rvm_path:-$HOME/.rvm}/environments/${ruby_string}@${gemset_name}"
14
+ else
15
+ rvm --create "${ruby_string}@${gemset_name}"
16
+ fi
17
+
18
+ else
19
+
20
+ # Notify the user to install the desired interpreter before proceeding.
21
+ echo "${ruby_string} was not found, please run 'rvm install ${ruby_string}' and then cd back into the project directory."
22
+
23
+ fi
24
+
25
+ #turn on the prompt in PS1
26
+ #RVM prompt
27
+ if [ -z "$RVM_PROMPT" ]
28
+ then
29
+ RVM_PROMPT=true
30
+ PS1="[\$(/usr/local/bin/rvm-prompt v g)] $PS1"
31
+ fi
32
+
data/Gemfile.lock CHANGED
@@ -1,7 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- medea-generators (0.0.1)
4
+ medea-generators (0.2.1)
5
+ medea
6
+ rest-client
5
7
 
6
8
  GEM
7
9
  remote: http://rubygems.org/
@@ -38,11 +40,16 @@ GEM
38
40
  erubis (2.6.6)
39
41
  abstract (>= 1.0.0)
40
42
  i18n (0.5.0)
43
+ json (1.4.6)
41
44
  mail (2.2.14)
42
45
  activesupport (>= 2.3.6)
43
46
  i18n (>= 0.4.0)
44
47
  mime-types (~> 1.16)
45
48
  treetop (~> 1.4.8)
49
+ medea (0.5.4)
50
+ json
51
+ rest-client
52
+ uuidtools
46
53
  mime-types (1.16)
47
54
  polyglot (0.3.1)
48
55
  rack (1.2.1)
@@ -64,14 +71,17 @@ GEM
64
71
  rake (>= 0.8.7)
65
72
  thor (~> 0.14.4)
66
73
  rake (0.8.7)
74
+ rest-client (1.6.1)
75
+ mime-types (>= 1.16)
67
76
  thor (0.14.6)
68
77
  treetop (1.4.9)
69
78
  polyglot (>= 0.3.1)
70
79
  tzinfo (0.3.24)
80
+ uuidtools (2.1.1)
71
81
 
72
82
  PLATFORMS
73
83
  ruby
74
84
 
75
85
  DEPENDENCIES
76
86
  medea-generators!
77
- rails (~> 3.0.0)
87
+ rails (~> 3.0.3)
@@ -2,36 +2,122 @@ require 'generators/medea'
2
2
  require 'rails/generators/generated_attribute'
3
3
  require 'medea'
4
4
 
5
+ require 'rest_client'
6
+
5
7
  module Medea
6
8
  module Generators
7
9
  class InitGenerator < Base
8
- no_tasks {
9
- attr_accessor :topic, :user, :pass
10
-
11
- def random_string length = 25
12
- rand(32**length).to_s(32)
13
- end
14
- }
15
- argument :jason_topic, :type => :string, :required => true, :banner => "Topic"
10
+ no_tasks { attr_accessor :topic, :user, :pass }
11
+ argument :jason_topic, :type => :string, :required => false, :banner => "Topic"
16
12
  argument :username, :type => :string, :required => false, :banner => "username"
17
- argument :password, :type => :string, :required => false, :banner => "s3cretp@ssword"
13
+ argument :password, :type => :string, :required => false, :banner => "password"
14
+
15
+ class_option :skip_topics, :desc => 'Don\'t automatically create topics.', :type => :boolean
18
16
 
19
17
  def initialize(*args, &block)
20
18
  super
21
19
 
22
20
  @topic = jason_topic
21
+ if not @topic
22
+ @topic ||= random_string 10
23
+ if @topic[0] =~ /[0-9]/
24
+ @topic[0] = "abcdefghij"[@topic[0].to_i]
25
+ end
26
+ end
23
27
  @user = username
24
28
  @user ||= random_string
25
29
  @pass = password
26
30
  @pass ||= random_string
27
31
  end
28
32
 
29
- def init_jasondb
33
+ def init
30
34
  #we can't create the topic, but we can create database.yml
31
35
  template "database.yml", "config/database.yml"
32
36
  template "jasondb.rb", "config/initializers/jasondb.rb"
37
+ create_topics
38
+ end
39
+
40
+ def patch_application
41
+ new_requires = <<-END
42
+ require 'action_controller/railtie'
43
+ require 'action_mailer/railtie'
44
+ require 'active_resource/railtie'
45
+ require 'rails/test_unit/railtie'
46
+ END
47
+
48
+ #open up application.rb
49
+ application_rb = File.new("#{Rails.root}/config/application.rb")
50
+ lines = application_rb.readlines
51
+ application_rb.close
52
+
53
+ changes = false
54
+ #find the line that reads require 'rails/all'
55
+ lines.each do |line|
56
+ #replace that line with the new four
57
+ changes = true if line.gsub!(/require 'rails\/all'/, new_requires)
58
+ end
33
59
 
60
+ if changes
61
+ application_rb = File.new("#{Rails.root}/config/application.rb", "w")
62
+ lines.each do |line|
63
+ application_rb.write line
64
+ end
65
+
66
+ application_rb.close
67
+ say_status "patched", "config/application.rb", :green
68
+ else
69
+ say_status "checked", "config/application.rb", :blue
70
+ end
34
71
  end
72
+
73
+ protected
74
+
75
+ def random_string length = 25
76
+ rand(32**length).to_s(32)
77
+ end
78
+
79
+ def create_topic topic
80
+ payload = {
81
+ "..USERNAME" => @user,
82
+ "..PASSWORD" => @pass,
83
+ "..CONFIRM_PASSWORD" => @pass,
84
+ "..PERMISSIONS" => "S",
85
+ "..CHECKSUM" => "FALSE",
86
+ "..DOMAIN" => %({"domain":"http://rest.jasondb.com/#{topic}"}),
87
+ "..STATE" => "0 EQ 0 THEN ..NEW THEN ..NEW",
88
+ "..A_new_domain" => "Your new domain #{topic} has been created"
89
+ }
90
+ success = true
91
+ begin
92
+ resp = RestClient.post "https://rest.jasondb.com/#{topic}", payload
93
+ if resp.code == 201
94
+ #success!
95
+ else
96
+ success = false
97
+ end
98
+ rescue
99
+ success = false
100
+ end
101
+
102
+ if success
103
+ say_status "create", "Topic created."
104
+ else
105
+ if topic[0] =~ /[0-9]/
106
+ say_status "Error", "An error occurred while creating the Topic. It must start with a letter", :red
107
+ else
108
+ say_status "Warning", "An error occurred while creating the Topic. Does it already exist?", :yellow
109
+ end
110
+ end
111
+
112
+ end
113
+
114
+ def create_topics
115
+ unless options.skip_topics?
116
+ create_topic "#{@topic}-dev"
117
+ create_topic "#{@topic}-test"
118
+ create_topic @topic
119
+ end
120
+ end
35
121
  end
36
122
  end
37
123
  end
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "medea-generators"
6
- s.version = "0.2.0"
6
+ s.version = "0.2.6"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Michael Jensen"]
9
9
  s.email = ["michaelj@jasondb.com"]
@@ -12,8 +12,9 @@ Gem::Specification.new do |s|
12
12
  s.description = %q{Medea Generators provides scaffolding for Rails projects using Medea to access JasonDB.
13
13
  This is very closely modelled on Ryan Bates' Nifty Generators.}
14
14
 
15
- s.add_development_dependency 'rails', '~> 3.0.0'
15
+ s.add_development_dependency 'rails', '~> 3.0.3'
16
16
  s.add_dependency 'medea'
17
+ s.add_dependency 'rest-client'
17
18
 
18
19
  s.files = `git ls-files`.split("\n")
19
20
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 0
9
- version: 0.2.0
8
+ - 6
9
+ version: 0.2.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - Michael Jensen
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-19 00:00:00 +11:00
17
+ date: 2011-01-21 00:00:00 +11:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -28,8 +28,8 @@ dependencies:
28
28
  segments:
29
29
  - 3
30
30
  - 0
31
- - 0
32
- version: 3.0.0
31
+ - 3
32
+ version: 3.0.3
33
33
  type: :development
34
34
  version_requirements: *id001
35
35
  - !ruby/object:Gem::Dependency
@@ -45,6 +45,19 @@ dependencies:
45
45
  version: "0"
46
46
  type: :runtime
47
47
  version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: rest-client
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ segments:
57
+ - 0
58
+ version: "0"
59
+ type: :runtime
60
+ version_requirements: *id003
48
61
  description: |-
49
62
  Medea Generators provides scaffolding for Rails projects using Medea to access JasonDB.
50
63
  This is very closely modelled on Ryan Bates' Nifty Generators.
@@ -58,6 +71,7 @@ extra_rdoc_files: []
58
71
 
59
72
  files:
60
73
  - .gitignore
74
+ - .rvmrc
61
75
  - Gemfile
62
76
  - Gemfile.lock
63
77
  - Rakefile