antikythera v0.2.0 Antikythera.Env View Source

Module to provide helpers to access environment variables defined by antikythera.

Environments and deployments

Antikythera instances and gears may run in the following two modes:

  • As a mix project, when invoked by running iex or mix command-line tool.
  • As an OTP release, which is generated by e.g. antikythera_core.generate_release task.

In general there are multiple deployments per antikythera instance. To distingish the target deployment from code, antikythera defines the following environment variables:

  • At compile time (for metaprogramming): ANTIKYTHERA_COMPILE_ENV must be appropriately set; the value can be retrieved by compile_env/0.
  • At runtime: ANTIKYTHERA_RUNTIME_ENV must be appropriately set; the value can be retrieved by runtime_env/0.

It is the responsibility of antikythera instance administrators to correctly set these environment variables when compiling/running antikythera and gears. Possible values returned by compile_env/0 and runtime_env/0 are:

  • names of deployments given by :deployments application config
  • :local (running an OTP release at local machine for testing purpose)
  • :undefined

As an example, if you set :dev and :prod in :deployments, then you get:

|                           | Mix.env() at compile-time              | Mix.env() at runtime    | compile_env(), runtime_env() |
|---------------------------+----------------------------------------+-------------------------+------------------------------|
| $ iex -S mix              | :dev  (toplevel), :prod (dependencies) | :dev                    | :undefined                   |
| $ mix test                | :test (toplevel), :prod (dependencies) | :test                   | :undefined                   |
| $ mix antikythera_local.* | :prod                                  | (:mix is not available) | :local                       |
| :dev deployment           | :prod                                  | (:mix is not available) | :dev                         |
| :prod deployment          | :prod                                  | (:mix is not available) | :prod                        |

You can use these values to distinguish the current context from your code.

Link to this section Summary

Link to this section Types

Link to this type t() View Source
t() :: :dev | :prod | :local | :undefined

Link to this section Functions

Link to this function antikythera_instance_name() View Source
antikythera_instance_name() :: atom()
Link to this function compile_env() View Source
compile_env() :: t()
Link to this function compiling_for_cloud?() View Source
compiling_for_cloud?() :: boolean()
Link to this function compiling_for_release?() View Source
compiling_for_release?() :: boolean()
Link to this function default_base_url(gear_name, env \\ :undefined) View Source
Link to this function gear_action_timeout() View Source
gear_action_timeout() :: pos_integer()

Timeout (in milli-seconds) for gear actions.

This can be configurable by specifying "GEAR_ACTION_TIMEOUT" environment variable when compiling antikythera. Defaults to 10000.

Link to this function no_listen?() View Source
no_listen?() :: boolean()
Link to this function port_to_listen() View Source
port_to_listen() :: non_neg_integer()

TCP port to listen to for incoming web requests.

The port can be specified by "PORT" runtime environment variable. Defaults to 8081 during mix test, and 8080 otherwise (thus one can run both iex -S mix and mix test at the same time).

Link to this function running_in_cloud?() View Source
running_in_cloud?() :: boolean()
Link to this function running_with_release?() View Source
running_with_release?() :: boolean()
Link to this function runtime_env() View Source
runtime_env() :: t()