lib/bushido/app.rb in bushido-0.0.12 vs lib/bushido/app.rb in bushido-0.0.13
- old
+ new
@@ -1,90 +1,135 @@
module Bushido
+ # Bushido::App provides all of the methods to interact with the app it's included in,
+ # and only contains class methods. Each method will check for the most recent data,
+ # so it's possible the data may change between two separate calls.
class App
class << self
- def app_url
+ def app_url #:nodoc:
"#{Bushido::Platform.host}/apps/#{Bushido::Platform.app}.json"
end
- def get(params={})
+ def get(params={}) #:nodoc:
Bushido::Command.get_command(app_url, params)
end
- def put(command, params={})
+ def put(command, params={}) #:nodoc:
params[:command] = command
Bushido::Command.put_command(app_url, params)
end
+ # Get all of the information related to the current app, returns a hash
def show
result = get
end
+ # Starts a currently stopped app
+ # ==== Example Scenario
+ # You may want to use this when recieving a \<tt>rake bushido:message</tt> event to
+ # start up your app for an incoming message
def start
put :start
end
+ # Stops an app.
+ # ==== Example Scenario
+ # Use this if you want to put your application in 'maintenance mode'.
def stop
put :stop
end
- def restart
+ # Stops (if started) and then starts an app
+ # ==== Example Scenario
+ # if you've added environmental variables to an application and need the app
+ # to restart to pick them up, use this.
+ def restart # :nodoc:
put :restart
end
-
+ # Claims an app for the current Bushido user
+ # Raises an exception if app is launched anonymously
+ # ==== Example Scenario
+ # Integrate Bushido app claiming behavior directly into your app to help
+ # conversion rates
def claim
put :claim
end
+ # Updates the app to the latest git checkout, using the branch the app
+ # was initially dpeloyed from
+ # ==== Example Scenario
+ # Allow your users to upgrade to the latest version via a link directly in your application
def update
put :update
end
+ # Add an environmental variable
+ # ==== Example Scenario
+ # Allows your app to easily integrate into third-party services, e.g. mixpanel.
+ # A user can enter their own API key, and you can activate your mixpanel code.
def add_var(key, value)
put :add_var, {:key => key, :value => value}
if Bushido::Command.last_command_successful?
ENV[key.upcase] = value
end
end
+ # Remove an environmental variable
+ # ==== Example Scenario
+ #
def remove_var(key)
put :remove_var, {:key => key}
if Bushido::Command.last_command_successful?
ENV[key.upcase] = nil
end
end
+ # List all custom domains belonging to the current application
+ # ==== Example Scenario
+ # A CMS may want to use this if hosting multiple sites
def domains
get()["app"]["domains"]
end
+ # Returns the current subdomain of the app, whether that's the default
+ # (e.g. "happy-rabbit-12") or a custom-set subdomain ("my-example")
+ # ==== Example Scenario
+ # A CMS will use this to know which subdomain to respond to
def subdomain
get()["app"]["subdomain"]
end
+ # Check if a subdomain of bushi.do is currently available
+ # ==== Example Scenario
+ # An application may want to change its subdomain to something user-chosen;
+ # use this before-hand to ensure it's available
def subdomain_available?(subdomain)
begin
return put :subdomain_available?, {:subdomain => subdomain}
rescue RestClient::UnprocessableEntity
return false
end
end
+ # Set the bushi.do subdomain of an application
+ # ==== Example Scenario
+ # An app is initially launched to a randomly-generated subdomain, but may
+ # want to move to something more memorable for a given user.
def set_subdomain(subdomain)
result = put :set_subdomain!, {:subdomain => subdomain}
if Bushido::Command.last_command_successful?
ENV["BUSHIDO_SUBDOMAIN"] = subdomain
ENV["PUBLIC_URL"] = "http://#{subdomain}.#{ENV['APP_TLD']}/"
@@ -93,31 +138,57 @@
result
end
+ # Adds a domain to the Bushido webrecords for an app. The app \<b>must</b>
+ # be a premium-app in order to add domains
+ # ==== Example Scenario
+ # If after launching a CMS a user decides to use a custom domain, an app
+ # can allow a user to customize it directly without resorting to the Bushido
+ # app control panel.
def add_domain(domain)
put :add_domain!, {:domain => domain}
end
+ # Removes a custom domain from the Bushido webrecords. Only works if the
+ # custom domain:
+ # * belongs to the current user
+ # * points at the current app
+ # ==== Example Scenario
+ # A user may decide to migrate a domain to a different app. This allows an app
+ # to remove it from its records without resorting to the Bushido app
+ # control panel
def remove_domain(domain)
put :remove_domain!, {:domain => domain}
end
+ # Clear out the given log
+ # ==== Example Scenario
+ # An app may keep its production log for analysis by the end-user, but the
+ # user may want to clear out the irrelevant past logs.
def clear_log!(name)
put :clear_log!, {:name => name}
end
+ # Get all of the new logs. Returns a hash of the form {:name_of_log_X => "content of log X"}
+ # On Bushido, there are by default the following logs:
+ # * access - Any page hit or asset request
+ # * error - Any error we had serving the page/asset
+ # * production - Output from the rails server
+ # * bushido - logs from the bushido deploy, update, start/stop process
+ #--
# TODO: Update to use the new logs controller
+ #++
def logs
get({:gift => "logs"})
end
- def ssh_key
+ def ssh_key #:nodoc:
get({:gift => "ssh_key"})["ssh_key"]
end
end
end
end