bushido 0.0.12 → 0.0.13

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/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
+ #:nodoc:
1
2
  source "http://rubygems.org"
2
3
 
3
4
  # Specify your gem's dependencies in bushido.gemspec
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["Sean Grove"]
10
10
  s.email = ["s@bushi.do"]
11
- s.homepage = "http://gem.bushi.do"
12
- s.summary = %q{Command-lin interface for bushi.do}
11
+ s.homepage = "https://github.com/sgrove/bushidogem"
12
+ s.summary = %q{Command-line interface for bushi.do}
13
13
  s.description = %q{A module for a Bushido app to manipulate everything about itself while running on Bushido, from deploying new apps, to claiming, restarting, updating existing apps, changing public domain, subdomains, etc.}
14
14
 
15
15
  s.add_dependency "rest-client", ">=1.6.1"
@@ -1,12 +1,15 @@
1
- module Bushido
1
+ module Bushido #:nodoc:
2
2
  require 'rubygems'
3
3
  require 'optparse'
4
4
  require 'rest-client'
5
5
  require 'json'
6
6
  require 'highline/import'
7
+ require 'yaml'
7
8
 
8
9
  require "bushido/platform"
9
10
  require "bushido/utils"
10
11
  require "bushido/command"
11
12
  require "bushido/app"
13
+ require "bushido/user"
14
+ require "bushido/events"
12
15
  end
@@ -1,53 +1,80 @@
1
1
  module Bushido
2
+ # Bushido::App provides all of the methods to interact with the app it's included in,
3
+ # and only contains class methods. Each method will check for the most recent data,
4
+ # so it's possible the data may change between two separate calls.
2
5
  class App
3
6
  class << self
4
- def app_url
7
+ def app_url #:nodoc:
5
8
  "#{Bushido::Platform.host}/apps/#{Bushido::Platform.app}.json"
6
9
  end
7
10
 
8
11
 
9
- def get(params={})
12
+ def get(params={}) #:nodoc:
10
13
  Bushido::Command.get_command(app_url, params)
11
14
  end
12
15
 
13
16
 
14
- def put(command, params={})
17
+ def put(command, params={}) #:nodoc:
15
18
  params[:command] = command
16
19
 
17
20
  Bushido::Command.put_command(app_url, params)
18
21
  end
19
22
 
20
23
 
24
+ # Get all of the information related to the current app, returns a hash
21
25
  def show
22
26
  result = get
23
27
  end
24
28
 
25
29
 
30
+ # Starts a currently stopped app
31
+ # ==== Example Scenario
32
+ # You may want to use this when recieving a \<tt>rake bushido:message</tt> event to
33
+ # start up your app for an incoming message
26
34
  def start
27
35
  put :start
28
36
  end
29
37
 
30
38
 
39
+ # Stops an app.
40
+ # ==== Example Scenario
41
+ # Use this if you want to put your application in 'maintenance mode'.
31
42
  def stop
32
43
  put :stop
33
44
  end
34
45
 
35
46
 
36
- def restart
47
+ # Stops (if started) and then starts an app
48
+ # ==== Example Scenario
49
+ # if you've added environmental variables to an application and need the app
50
+ # to restart to pick them up, use this.
51
+ def restart # :nodoc:
37
52
  put :restart
38
53
  end
39
54
 
40
-
55
+ # Claims an app for the current Bushido user
56
+ # Raises an exception if app is launched anonymously
57
+ # ==== Example Scenario
58
+ # Integrate Bushido app claiming behavior directly into your app to help
59
+ # conversion rates
41
60
  def claim
42
61
  put :claim
43
62
  end
44
63
 
45
64
 
65
+ # Updates the app to the latest git checkout, using the branch the app
66
+ # was initially dpeloyed from
67
+ # ==== Example Scenario
68
+ # Allow your users to upgrade to the latest version via a link directly in your application
46
69
  def update
47
70
  put :update
48
71
  end
49
72
 
50
73
 
74
+ # Add an environmental variable
75
+ # ==== Example Scenario
76
+ # Allows your app to easily integrate into third-party services, e.g. mixpanel.
77
+ # A user can enter their own API key, and you can activate your mixpanel code.
51
78
  def add_var(key, value)
52
79
  put :add_var, {:key => key, :value => value}
53
80
  if Bushido::Command.last_command_successful?
@@ -56,6 +83,9 @@ module Bushido
56
83
  end
57
84
 
58
85
 
86
+ # Remove an environmental variable
87
+ # ==== Example Scenario
88
+ #
59
89
  def remove_var(key)
60
90
  put :remove_var, {:key => key}
61
91
  if Bushido::Command.last_command_successful?
@@ -64,16 +94,27 @@ module Bushido
64
94
  end
65
95
 
66
96
 
97
+ # List all custom domains belonging to the current application
98
+ # ==== Example Scenario
99
+ # A CMS may want to use this if hosting multiple sites
67
100
  def domains
68
101
  get()["app"]["domains"]
69
102
  end
70
103
 
71
104
 
105
+ # Returns the current subdomain of the app, whether that's the default
106
+ # (e.g. "happy-rabbit-12") or a custom-set subdomain ("my-example")
107
+ # ==== Example Scenario
108
+ # A CMS will use this to know which subdomain to respond to
72
109
  def subdomain
73
110
  get()["app"]["subdomain"]
74
111
  end
75
112
 
76
113
 
114
+ # Check if a subdomain of bushi.do is currently available
115
+ # ==== Example Scenario
116
+ # An application may want to change its subdomain to something user-chosen;
117
+ # use this before-hand to ensure it's available
77
118
  def subdomain_available?(subdomain)
78
119
  begin
79
120
  return put :subdomain_available?, {:subdomain => subdomain}
@@ -83,6 +124,10 @@ module Bushido
83
124
  end
84
125
 
85
126
 
127
+ # Set the bushi.do subdomain of an application
128
+ # ==== Example Scenario
129
+ # An app is initially launched to a randomly-generated subdomain, but may
130
+ # want to move to something more memorable for a given user.
86
131
  def set_subdomain(subdomain)
87
132
  result = put :set_subdomain!, {:subdomain => subdomain}
88
133
  if Bushido::Command.last_command_successful?
@@ -95,28 +140,54 @@ module Bushido
95
140
  end
96
141
 
97
142
 
143
+ # Adds a domain to the Bushido webrecords for an app. The app \<b>must</b>
144
+ # be a premium-app in order to add domains
145
+ # ==== Example Scenario
146
+ # If after launching a CMS a user decides to use a custom domain, an app
147
+ # can allow a user to customize it directly without resorting to the Bushido
148
+ # app control panel.
98
149
  def add_domain(domain)
99
150
  put :add_domain!, {:domain => domain}
100
151
  end
101
152
 
102
153
 
154
+ # Removes a custom domain from the Bushido webrecords. Only works if the
155
+ # custom domain:
156
+ # * belongs to the current user
157
+ # * points at the current app
158
+ # ==== Example Scenario
159
+ # A user may decide to migrate a domain to a different app. This allows an app
160
+ # to remove it from its records without resorting to the Bushido app
161
+ # control panel
103
162
  def remove_domain(domain)
104
163
  put :remove_domain!, {:domain => domain}
105
164
  end
106
165
 
107
166
 
167
+ # Clear out the given log
168
+ # ==== Example Scenario
169
+ # An app may keep its production log for analysis by the end-user, but the
170
+ # user may want to clear out the irrelevant past logs.
108
171
  def clear_log!(name)
109
172
  put :clear_log!, {:name => name}
110
173
  end
111
174
 
112
175
 
176
+ # Get all of the new logs. Returns a hash of the form {:name_of_log_X => "content of log X"}
177
+ # On Bushido, there are by default the following logs:
178
+ # * access - Any page hit or asset request
179
+ # * error - Any error we had serving the page/asset
180
+ # * production - Output from the rails server
181
+ # * bushido - logs from the bushido deploy, update, start/stop process
182
+ #--
113
183
  # TODO: Update to use the new logs controller
184
+ #++
114
185
  def logs
115
186
  get({:gift => "logs"})
116
187
  end
117
188
 
118
189
 
119
- def ssh_key
190
+ def ssh_key #:nodoc:
120
191
  get({:gift => "ssh_key"})["ssh_key"]
121
192
  end
122
193
  end
@@ -1,5 +1,5 @@
1
1
  module Bushido
2
- class Command
2
+ class Command #:nodoc:
3
3
  @@last_request = nil
4
4
  @@request_count = 0
5
5
  @@last_request_successful = true
@@ -0,0 +1,32 @@
1
+ module Bushido
2
+ # Bushido::Event lists all the events from the Bushido server. All events
3
+ # are hashes with the following keys:
4
+ # * category
5
+ # * name
6
+ # * data
7
+ # Data will hold the arbitrary data for the type of event signalled
8
+ class Event
9
+ begin
10
+ @@events = YAML.load(ENV["BUSHIDO_EVENTS"]) #:nodoc:
11
+ rescue
12
+ @@events = []
13
+ end
14
+
15
+ class << self
16
+ # Lists all events
17
+ def all
18
+ @@events
19
+ end
20
+
21
+ # Lists the first (oldest) event
22
+ def first
23
+ @@events.first
24
+ end
25
+
26
+ # Lists the last (newest) event
27
+ def last
28
+ @@events.last
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,5 +1,5 @@
1
1
  module Bushido
2
- class Platform
2
+ class Platform #:nodoc:
3
3
  class << self
4
4
  def app
5
5
  ENV['BUSHIDO_APP']
@@ -0,0 +1,29 @@
1
+ module Bushido
2
+ # Bushido User enables user validation against Bushido's server
3
+ class User
4
+ class << self
5
+ def unity_url #:nodoc:
6
+ "#{Bushido::Platform.host}/connect/v1"
7
+ end
8
+
9
+
10
+ # Checks whether user an email and password correspond to a valid bushido
11
+ # user. Returns nil if false, or the Bushido user's ID if true.
12
+ def valid?(email, pass)
13
+ params = {}
14
+ params[:email] = email
15
+ params[:pass] = pass
16
+ Bushido::Command.post_command("#{unity_url}/valid", params)
17
+ end
18
+
19
+
20
+ # Checks whether email corresponds to a valid Bushido user.
21
+ # Returns true or false
22
+ def exists?(email)
23
+ params = {}
24
+ params[:email] = email
25
+ Bushido::Command.post_command("#{unity_url}/exists", params)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,5 +1,5 @@
1
1
  module Bushido
2
- class Utils
2
+ class Utils #:nodoc:
3
3
  class << self
4
4
  # TODO: Make this update all the available ENV variables
5
5
  def refresh_env!
@@ -1,3 +1,4 @@
1
1
  module Bushido
2
- VERSION = "0.0.12"
2
+ # Current version of the Bushido gem
3
+ VERSION = "0.0.13"
3
4
  end
@@ -1,6 +1,6 @@
1
1
  require 'test/unit'
2
2
 
3
- class TestExecutable < Test::Unit::TestCase
3
+ class TestExecutable < Test::Unit::TestCase #:nodoc:
4
4
  EXECUTABLE =
5
5
  def test_complains_with_no_args
6
6
  output = %x{#{File.expand_path('../../bin/bushido', __FILE__)}}
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: bushido
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.12
5
+ version: 0.0.13
6
6
  platform: ruby
7
7
  authors:
8
8
  - Sean Grove
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-03-31 00:00:00 -07:00
13
+ date: 2011-05-27 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -64,12 +64,14 @@ files:
64
64
  - lib/bushido.rb
65
65
  - lib/bushido/app.rb
66
66
  - lib/bushido/command.rb
67
+ - lib/bushido/event.rb
67
68
  - lib/bushido/platform.rb
69
+ - lib/bushido/user.rb
68
70
  - lib/bushido/utils.rb
69
71
  - lib/bushido/version.rb
70
72
  - test/test_executable.rb
71
73
  has_rdoc: true
72
- homepage: http://gem.bushi.do
74
+ homepage: https://github.com/sgrove/bushidogem
73
75
  licenses: []
74
76
 
75
77
  post_install_message:
@@ -92,9 +94,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
94
  requirements: []
93
95
 
94
96
  rubyforge_project: bushido
95
- rubygems_version: 1.5.0
97
+ rubygems_version: 1.6.2
96
98
  signing_key:
97
99
  specification_version: 3
98
- summary: Command-lin interface for bushi.do
100
+ summary: Command-line interface for bushi.do
99
101
  test_files:
100
102
  - test/test_executable.rb