Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

app_mode

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

app_mode

  • 1.0.3
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

== Welcome to AppMode

AppMode provides easy management of "states". This gem can be used to indicate the state that a class, module, library, script, or application is running in.

== Getting Started

  1. Install AppMode at the command prompt if you haven't yet:

    gem install app_mode

  2. Require the gem in your gemfile:

    gem 'app_mode', '~> 1.0.0'

  3. Require the gem wherever you need state management:

    require 'app_mode'

== Usage

There are two ways to use this gem.

  1. Create an object that handles the state of the module, class, or application:

    This is the recommended method for managing the states of gems or libraries. The reason is that the second method is global and changing the state in a gem or library means the state will change in the application, too. Therefore, it is better to localize the state to the gem or library.

    See notes below on the :dynamic state, which is the default.

    my_mode = StateManager.new

    my_mode.state = :test

    if my_mode == :development

    Development code.

    end

    if my_mode.test

    Test code.

    end

    Or specify the state you want to use when initializing the object:

    my_mode = StateManager.new(:development)

    If you would like to use states other than those provided, you are free to do so:

    my_mode = StateManager.new(:blue, [:red, :yellow, :green, :blue])

    my_mode.state = :yellow

    if my_mode.green

    Green code.

    end

    The :dynamic state is still valid with custom states:

    my_mode = StateManager.new(:dynamic, [:red, :yellow, :green, :blue])

  2. Use the class methods: This method is really only recommended for the end application. The initial state will be set dynamically, so there is nothing to do except use it.

    if AppMode.state == :development

    Development code.

    end

    AppMode.state = :test

    if AppMode.test

    Test code.

    end

== Usage in libraries/gems

Following these guidelines consumers of your library or gem will still have access to the state of your gem and can control it, if need be. Otherwise, changing AppMode.state to :development could put every gem that uses AppMode into "development" mode, which is probably not what you want to have happen to your gem or anyone else's.

The following method is recommended for use in libraries or gems:

module MyModule MyModuleMode = StateManager.new end

or

class MyClass MyClassMode = StateManager.new end

== A Word on States

  • StateManager assumes the following default "states":

    :development

    :test

    :rake

    :production

  • There is a fifth state (:dynamic), which will tell StateManager to determine the state by examining the stack trace. It is only available when initializing a new StateManager object and assumes that the first state is 'development', the second is 'test', the third is 'rake', and the last one (not the fourth) is 'production'. If less than four states are specified, the last one will be used for multiple states. For example, if the states specified are [:orange, :apple, :grape], :grape will be used for both rake and production.

  • Only states in the list when the StateManager object were created are valid. For example, the following code will generate errors:

    my_mode = StateManager.new(:blue, [:red, :green]) #=> RuntimeError: Invalid environment setting: 'blue'.

    my_mode = StateManager.new(:dynamic, [:red, :green])

    my_mode.state = :development #=> RuntimeError: Invalid environment setting: 'development'.

    if my_mode.blue #=> RuntimeError: Invalid environment setting: 'blue'.

    Blue code.

    end

  • If you are unsure that a state is in the list, there are two ways to check:

    Check for inclusion in the array of valid states:

    my_mode = StateManager.new(:red, [:red, :green])

    if my_mode.valid_states.include?(:purple) && my_mode.purple

    Purple code.

    end

    Use equivalency:

    my_mode = StateManager.new(:red, [:red, :green])

    if my_mode.state == :purple

    Purple code.

    end

  • If you are compelled to change the states for the global AppMode class, that may be done by using the setup method, which accepts the same arguments as StateManager.new. Passing in a state of :dynamic will allow it to set the state as it is intended.

  • Although this document explains how to do so, it is best to leave AppMode (its valid states and its state) unaltered, as such changes are global and could have unexpected results when other code (such as gems) may be relying on the default settings, even though it is recommended that they have their own object that should be made available to your code.

== Additional Documentation

rake rdoc:app

== License

RakeTasks is released under the {LGPLv3 license}[link:../../license/lgplv3].

link:../../license/lgplv3.png

FAQs

Package last updated on 12 Dec 2011

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc