Compiling and building a project with rebar

本文详细介绍了如何使用Rebar配置ErlangWeb框架,包括添加依赖、获取项目依赖、编译项目、配置服务器以及运行项目的步骤。确保了ErlangWeb框架在项目中的正确部署。

转载:http://wiki.erlang-web.org/Rebar


Getting Erlang Web

Before you start, you have to prepare the project directory, and get Erlang Web framework as a dependency.

1. Add a dependency to Erlang Web in rebar.config file in your project directory.

{lib_dirs,["deps"]}.

{deps, [
{'erlang-web', ".*", {git, "git://github.com/esl/erlang-web.git", "rebar"}} 
]}.

2. Get project dependencies

    ./rebar get-deps

Compiling

Before you will be ready to use the framework for the first time, you should compile it.

To do so be sure to have all dependencies, erlang (base or hype) erlang-inets, yaws and the erlang tools, on most packaged distributions they are usually a set of different packages. Most of compiling errors are because of missing erlang packages.

1. Add all additional applications to the section sub_dirs in rebar.config file

{sub_dirs,[
    "apps/myapp"
]}.

2. Compile the project

    ./rebar compile

You should run that command every time you change something in your project.

Building

1. Copy the reltool.config.sample script from erlang-web directory in deps to the main directory as reltool.config

In reltool.config.sample it is assumed that you store all your dependencies in deps directory, if it's name is different you will have to change appropriet paths

Erlang Web framework supports now the two main servers implemented in Erlang: INETS and Yaws. By default it uses inets. To change that switch inets to yaws in reltool.config.

2. Add project specific applications to the rel tuple in reltool.config file

{sys, [
       {lib_dirs, ["apps", "deps", "deps/erlang-web/apps"
                  ]},
       {rel, "trace-this", "1.0",
        [
         %% Required applications
         ...
         
         %% Project specific applications
         
         myapp
        ]},

And an app tuple

 {app, myapp, [{incl_cond, include}]}

3. Add copy directive to move project specific configuration files (like dispatch.conf) and templates

           {copy, "apps/myapp/priv/config"},
           {copy, "apps/myapp/priv/docroot"},
           {copy, "apps/myapp/priv/templates"}

4. Run the following command every time you want to upgrade your project

    ./rebar generate force=1

It will build the project in rel directory. Option force=1 makes rebar ignore the fact that the @rel@ directory exists, and lets you upgrade your project.

Results

Rebar prepares the structure of rel directory, that is your project built direcotory:

  • creates the mandatory directories for the Erlang Web framework, including:
    • bin
    • config
    • docroot
    • lib
    • log
    • pipes
    • releases
    • templates
  • copies the binary executables:
    • heart
    • run_erl
    • to_erl
    • erts directory
  • copy start scripts for both: interactive and embedded mode
  • creates start_erl.data configuration file

  • prepare sample framework configuration files (or copy project specific ones):
    • dispatch.conf
    • errors.conf
    • project.conf
  • builds simple welcome, 404 and 501 error pages
  • copies the required autocomplete wpart files
  • creates .rel and sys.config files
  • generates boot file

Creating skeleton for a new application in the project

1. Copy '''templates''' directory from Erlang Web to maint project directory

    cp -r deps/erlang-web/templates ./

2. Run

    ./rebar create template=add [app_name=newapp] [app_vsn=0.1]

It puts a template structure for the new application in apps directory

Warning: Rebar looks for template add through all of project dependencies, and returns an error, bacause it doesn't find it. To solve it comment deps and sub_dirs sections in rebar.config

Running the project

To start the server run in rel directory:

    bin/start

or

    bin/start_interactive


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值