The migrating from Rails to Erlyweb of our project is going to be finished. I got more experience on how to deal with Erlyweb. First, the project management can be more straightforward. Here is it:
2. Manage project - Reloaded
Erlyweb provides erlyweb:compile(App, ..) to compile the source files under app directory. To start an app, you usually should erlydb:start(mysql, ....) and compile app files first. To make life easy, you can put some scripting like code under myproject\script directory. Here's my project source tree:
myproject
+ apps
| + myapp
| + ebin
| + include
| + nbproject
| + src
| + components
| + lib
| + services
| + test
| + www
+ config
| * yaws.conf
| * erlyweb.conf
+ script
+ ebin
+ src
* erlyweb_app.erl
Where, config/yaws.conf contains the yaws' configuration. Here's mine:
ebin_dir = D:/myapp/trunk/script/ebin
<server localhost>
port = 8000
listen = 0.0.0.0
docroot = D:/myapp/trunk/apps/myapp/www
appmods = </myapp, erlyweb>
start_mod = erlyweb_app
<opaque>
appname = myapp
environment = development
</opaque>
</server>
You may have noticed, all beams under D:/myapp/trunk/script/ebin will be auto-loaded when yaws starts up. And you can prepare another yaws.conf for test or production environment by change the environment var in opaque
Now the config/erlyweb.conf:
{pa, ["script/ebin",
"apps/myapp/ebin",
"vendor/erlyweb/ebin",
"vendor/eunit/ebin"]}.
{i, ["vendor",
"apps/myapp/include",
"/usr/local/lib/yaws"]}.
{production, [{dbdriver, mysql},
{database, "mydb_production"},
{hostname, "localhost"},
{username, "mememe"},
{password, "pwpwpw"}]}.
{development, [{dbdriver, mysql},
{database, "mydb_development"},
{hostname, "localhost"},
{username, "mememe"},
{password, "pwpwpw"}]}.
{test, [{dbdriver, mysql},
{database, "mydb_test"},
{hostname, "localhost"},
{username, "mememe"},
{password, "pwpwpw"}]}.
erlyweb_app.erl is the boot scripting code, which will be used to start db connection and compile the code. Currently I run these scripts manually. I'll talk later.
Notice: erlyweb 0.6.2 needed, which contains Haoboy's logfun patch.
%% @doc Main entrance to the entire erlyweb application.
-module(erlyweb_app).
-export([start/1]).
-export([get_conf/1,
build/1,
build_test/1,
build_product/1,
environment/1,
decompile/2,
db_log/4,
db_dummy_log/4
]).
-include("yaws/include/yaws.hrl").
-include("yaws/include/yaws_api.hrl").
db_log(Module, Line, Level, FormatFun) ->
mysql:log(Module, Line, Level, FormatFun).
db_dummy_log(_Mod, _Line, _Level, _FormatFun) ->
empty.
%% @doc call back function when yaws start an app
%% @see man yaws.conf
%% start_mod = Module
%% Defines a user provided callback module. At startup of the
%% server, Module:start/1 will be called. The #sconf{} record
%% (defined in yaws.hrl) will be used as the input argument. This
%% makes it possible for a user application to syncronize the
%% startup with the yaws server as well as getting hold of user
%% specific configuration data, see the explanation for the
%%
To build it,
> erlc -I /opt/local/lib/yaws/include erlyweb_app.erl -o ebin
The erlyweb_app.erl is almost escript ready, but I use it as module functions currently. It's pre-compiled and erlyweb_app.beam is placed under script/ebin
So, I start myapp by steps:
cd \myproject
yaws -sname myapp -i --conf config/yaws.conf --erlang "-smp auto"
1> erlyweb_app:build(myapp).
The erlyweb_app.erl is almost escript ready, but I use it as module functions currently. It's pre-compiled and erlyweb_app.beam is placed under script/ebin
After I made changes to myapp, I run above erlyweb_app:build(myapp). again, then everything is up to date.
And if you'd like to build it from another erl shell, try this:
erl -sname erlybird
(erlybird@myhost)1> rpc:call(myapp@myhost, erlyweb_app, build, [myapp])
Yes, next version of ErlyBird will support building erlyweb apps remotely in ErlyBird's Erlang shell.
分享到:
相关推荐
rails-dev-box, 面向 Ruby on Rails 核心开发的虚拟机 用于 Ruby on Rails 核心开发的虚拟机简介注意:这个虚拟机不是为 Rails 应用程序开发而设计的,只是为。 这个项目自动设置开发环境,以便在 Ruby on Rails ...
rails-angular-postgres-and-bootstrap-second-edition 英文原版
rails-exporter-源码.rar
rails-documentation-2-0-2
rails-beginner-s-guide是Rails 指导手册,帮组学习了解rails开发
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
用于Ruby on Rails核心开发的虚拟机 介绍 请注意,该虚拟机并非为...host $ cd rails-dev-box host $ vagrant up 而已。 安装完成后,您可以使用以下命令访问虚拟机: host $ vagrant ssh Welcome to Ubuntu 20.10
awesome-rails-gem-zh_CN, Rails 常用 Gem 列表 - Awesome Rails Gem 中文版
rails-react-components-源码.rar
rails-builds-test-源码.rar
rails-yelp-mvp-源码.rar
rails-development-environment-master.rar
rails-documentation-1-2-1.zip
Ruby on Rails 初体验--北大青鸟教师专题讲座PPT 想学Ruby的赶快下载看看。 Ruby--目前最快速开发工具
rails-documentation-1-2-0-rc1.chm
Ruby on Rails Guides v2 - Ruby on Rails 4.2.5
rails-ftw-v0.18-2.1.5-4.1.8.exe用于在windows环境下搭建readmine环境
js-rails-deck-finder-project
rails-playlists-源码.rar
rails-tutorial-源码.rar