tag:github.com,2008:https://github.com/idevz/vanilla/releases Release notes from vanilla 2017-02-09T16:00:17Z tag:github.com,2008:Repository/40606693/V0.1.0-rc6.2 2017-02-11T01:16:05Z V0.1.0-rc6.2 <h4>Features add</h4> <ul> <li>Add Vanilla page_cache as an proxycache or fastcgicache similar caching for high performance</li> <li>Add sysconf for convenience configuration such as sys resource like MC, DB etc.</li> <li>Update resty-template to the orgin version</li> <li>Add Vanilla cache libs like <code>vanilla.v.libs.cache</code>,<code>vanilla.v.cache.mc</code>,<code>vanilla.v.cache.lru</code> etc.</li> <li>Add the <a href="https://idevz.gitbooks.io/vanilla-zh/content/quick_learning/hello_world.html" rel="nofollow">Chinese Docs</a> for Vanilla</li> </ul> idevz tag:github.com,2008:Repository/40606693/V0.1.0-rc6.1 2016-05-06T09:22:00Z V0.1.0-rc6.1 <p>New Features</p> <ul> <li>A sequence of lib Loader(like LoadLibrary,LoadController,LoadModel,LoadPlugin,LoadApplication,LoadApp,LoadV) instead of require for Multi App.</li> <li>Add framework/init.lua and framework/registry.lua As Vanilla base lib</li> <li>Save ngx.var* to VANILLA_REGISTRY for performance improve.</li> <li>Add Class function for good OO practice.</li> <li>Update controllers for OO design.</li> </ul> <p>1.install vanilla 0.1.--rc6.0 is same to rc5.</p> <p>2.Loaders useage.</p> <div class="highlight highlight-source-lua notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="-- LoadLibrary to load application's Library. LoadLibrary('aa') -- ~/data/vanilla/ok/application/library/aa.lua -- LoadController to load application's Controller. LoadController('index') -- ~/data/vanilla/ok/application/controllers/index.lua -- LoadModel to load application's Model. LoadModel('service.user') -- ~/data/vanilla/ok/application/models/service/user.lua -- LoadPlugin to load application's Plugin. -- LoadApplication to load application's Application dir. LoadApplication('controller.index') -- ~/data/vanilla/ok/application/controllers/index.lua -- LoadApp to load libs from Application root. LoadApp 'application.bootstrap' -- ~/data/vanilla/ok/application/bootstrap.lua -- LoadV to load Vanilla FrameWork libs. LoadV 'vanilla.v.error' -- ~/data/vanilla/framework/0_1_0_rc6/vanilla/v/error.lua"><pre><span class="pl-c"><span class="pl-c">--</span> LoadLibrary to load application's Library.</span> <span class="pl-c1">LoadLibrary</span>(<span class="pl-s"><span class="pl-pds">'</span>aa<span class="pl-pds">'</span></span>) <span class="pl-c"><span class="pl-c">--</span> ~/data/vanilla/ok/application/library/aa.lua</span> <span class="pl-c"><span class="pl-c">--</span> LoadController to load application's Controller.</span> <span class="pl-c1">LoadController</span>(<span class="pl-s"><span class="pl-pds">'</span>index<span class="pl-pds">'</span></span>) <span class="pl-c"><span class="pl-c">--</span> ~/data/vanilla/ok/application/controllers/index.lua</span> <span class="pl-c"><span class="pl-c">--</span> LoadModel to load application's Model.</span> <span class="pl-c1">LoadModel</span>(<span class="pl-s"><span class="pl-pds">'</span>service.user<span class="pl-pds">'</span></span>) <span class="pl-c"><span class="pl-c">--</span> ~/data/vanilla/ok/application/models/service/user.lua</span> <span class="pl-c"><span class="pl-c">--</span> LoadPlugin to load application's Plugin.</span> <span class="pl-c"><span class="pl-c">--</span> LoadApplication to load application's Application dir.</span> <span class="pl-c1">LoadApplication</span>(<span class="pl-s"><span class="pl-pds">'</span>controller.index<span class="pl-pds">'</span></span>) <span class="pl-c"><span class="pl-c">--</span> ~/data/vanilla/ok/application/controllers/index.lua</span> <span class="pl-c"><span class="pl-c">--</span> LoadApp to load libs from Application root.</span> <span class="pl-c1">LoadApp</span> <span class="pl-s"><span class="pl-pds">'</span>application.bootstrap<span class="pl-pds">' </span></span><span class="pl-c"><span class="pl-c">--</span> ~/data/vanilla/ok/application/bootstrap.lua</span> <span class="pl-c"><span class="pl-c">--</span> LoadV to load Vanilla FrameWork libs.</span> <span class="pl-c1">LoadV</span> <span class="pl-s"><span class="pl-pds">'</span>vanilla.v.error<span class="pl-pds">' </span></span><span class="pl-c"><span class="pl-c">--</span> ~/data/vanilla/framework/0_1_0_rc6/vanilla/v/error.lua</span></pre></div> <p>3.OO practice</p> <div class="highlight highlight-source-lua notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="-- ~/data/vanilla/ok/application/library/bb.lua local LibBb = Class(&quot;bb&quot;) function LibBb:idevzDo(params) local params = params or { lib_bb = 'idevzDo LibBb'} return params end function LibBb:__construct( data ) print_r('===============init bbb=========') self.lib = 'LibBb---------------xxx' .. data.info -- self.a = 'ppp' end function LibBb:idevzDobb(params) local params = params or { lib_bb = 'idevzDo idevzDobb'} return params end return LibBb -- ~/data/vanilla/ok/application/library/aa.lua local LibAa = Class(&quot;aa&quot;, LoadLibrary('bb')) function LibAa:idevzDo(params) local params = params or { lib_aa = 'idevzDo LibAa'} return params end function LibAa:__construct( data ) print_r('===============init==aaa=======' .. data.info) -- self.parent:init() self.lib = 'LibAa----------------------------aaaa' end return LibAa -- ~/data/vanilla/ok/application/controllers/index.lua local IndexController = Class('controllers.index') local aa = LoadLibrary('aa') function IndexController:__construct() self.aa = aa({info='ppppp'}) local get = self:getRequest():getParams() self.d = '===============index===============' .. get.act end function IndexController:index() -- self.parent:fff() do return user_service:get() .. sprint_r(aa:idevzDobb()) .. sprint_r(self.aa:idevzDobb()) -- .. sprint_r(self.parent.aaa) .. Registry['APP_NAME'] .. self.d end local view = self:getView() local p = {} p['vanilla'] = 'Welcome To Vanilla...' .. service:get() p['zhoujing'] = 'Power by Openresty' view:assign(p) return view:display() end return IndexController"><pre><span class="pl-c"><span class="pl-c">--</span> ~/data/vanilla/ok/application/library/bb.lua</span> <span class="pl-k">local</span> <span class="pl-smi">LibBb</span> <span class="pl-k">=</span> <span class="pl-c1">Class</span>(<span class="pl-s"><span class="pl-pds">"</span>bb<span class="pl-pds">"</span></span>) <span class="pl-k">function</span> <span class="pl-en">LibBb</span>:<span class="pl-en">idevzDo</span>(<span class="pl-smi">params</span>) <span class="pl-k">local</span> <span class="pl-smi">params</span> <span class="pl-k">=</span> <span class="pl-smi">params</span> <span class="pl-k">or</span> { <span class="pl-smi">lib_bb</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>idevzDo LibBb<span class="pl-pds">'</span></span>} <span class="pl-k">return</span> <span class="pl-smi">params</span> <span class="pl-k">end</span> <span class="pl-k">function</span> <span class="pl-en">LibBb</span>:<span class="pl-en">__construct</span>( <span class="pl-smi">data</span> ) <span class="pl-c1">print_r</span>(<span class="pl-s"><span class="pl-pds">'</span>===============init bbb=========<span class="pl-pds">'</span></span>) <span class="pl-c1">self</span>.<span class="pl-e">lib</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>LibBb---------------xxx<span class="pl-pds">' </span></span><span class="pl-k">..</span> <span class="pl-smi">data</span>.<span class="pl-e">info</span> <span class="pl-c"><span class="pl-c">--</span> self.a = 'ppp'</span> <span class="pl-k">end</span> <span class="pl-k">function</span> <span class="pl-en">LibBb</span>:<span class="pl-en">idevzDobb</span>(<span class="pl-smi">params</span>) <span class="pl-k">local</span> <span class="pl-smi">params</span> <span class="pl-k">=</span> <span class="pl-smi">params</span> <span class="pl-k">or</span> { <span class="pl-smi">lib_bb</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>idevzDo idevzDobb<span class="pl-pds">'</span></span>} <span class="pl-k">return</span> <span class="pl-smi">params</span> <span class="pl-k">end</span> <span class="pl-k">return</span> <span class="pl-smi">LibBb</span> <span class="pl-c"><span class="pl-c">--</span> ~/data/vanilla/ok/application/library/aa.lua</span> <span class="pl-k">local</span> <span class="pl-smi">LibAa</span> <span class="pl-k">=</span> <span class="pl-c1">Class</span>(<span class="pl-s"><span class="pl-pds">"</span>aa<span class="pl-pds">"</span></span>, <span class="pl-c1">LoadLibrary</span>(<span class="pl-s"><span class="pl-pds">'</span>bb<span class="pl-pds">'</span></span>)) <span class="pl-k">function</span> <span class="pl-en">LibAa</span>:<span class="pl-en">idevzDo</span>(<span class="pl-smi">params</span>) <span class="pl-k">local</span> <span class="pl-smi">params</span> <span class="pl-k">=</span> <span class="pl-smi">params</span> <span class="pl-k">or</span> { <span class="pl-smi">lib_aa</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>idevzDo LibAa<span class="pl-pds">'</span></span>} <span class="pl-k">return</span> <span class="pl-smi">params</span> <span class="pl-k">end</span> <span class="pl-k">function</span> <span class="pl-en">LibAa</span>:<span class="pl-en">__construct</span>( <span class="pl-smi">data</span> ) <span class="pl-c1">print_r</span>(<span class="pl-s"><span class="pl-pds">'</span>===============init==aaa=======<span class="pl-pds">' </span></span><span class="pl-k">..</span> <span class="pl-smi">data</span>.<span class="pl-e">info</span>) <span class="pl-c"><span class="pl-c">--</span> self.parent:init()</span> <span class="pl-c1">self</span>.<span class="pl-e">lib</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>LibAa----------------------------aaaa<span class="pl-pds">'</span></span> <span class="pl-k">end</span> <span class="pl-k">return</span> <span class="pl-smi">LibAa</span> <span class="pl-c"><span class="pl-c">--</span> ~/data/vanilla/ok/application/controllers/index.lua</span> <span class="pl-k">local</span> <span class="pl-smi">IndexController</span> <span class="pl-k">=</span> <span class="pl-c1">Class</span>(<span class="pl-s"><span class="pl-pds">'</span>controllers.index<span class="pl-pds">'</span></span>) <span class="pl-k">local</span> <span class="pl-smi">aa</span> <span class="pl-k">=</span> <span class="pl-c1">LoadLibrary</span>(<span class="pl-s"><span class="pl-pds">'</span>aa<span class="pl-pds">'</span></span>) <span class="pl-k">function</span> <span class="pl-en">IndexController</span>:<span class="pl-en">__construct</span>() <span class="pl-c1">self</span>.<span class="pl-e">aa</span> <span class="pl-k">=</span> <span class="pl-c1">aa</span>({<span class="pl-smi">info</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">'</span>ppppp<span class="pl-pds">'</span></span>}) <span class="pl-k">local</span> <span class="pl-smi">get</span> <span class="pl-k">=</span> <span class="pl-c1">self</span>:<span class="pl-c1">getRequest</span>():<span class="pl-c1">getParams</span>() <span class="pl-c1">self</span>.<span class="pl-e">d</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>===============index===============<span class="pl-pds">' </span></span><span class="pl-k">..</span> <span class="pl-smi">get</span>.<span class="pl-e">act</span> <span class="pl-k">end</span> <span class="pl-k">function</span> <span class="pl-en">IndexController</span>:<span class="pl-en">index</span>() <span class="pl-c"><span class="pl-c">--</span> self.parent:fff()</span> <span class="pl-k">do</span> <span class="pl-k">return</span> <span class="pl-en">user_service</span>:<span class="pl-c1">get</span>() <span class="pl-k">..</span> <span class="pl-c1">sprint_r</span>(<span class="pl-en">aa</span>:<span class="pl-c1">idevzDobb</span>()) <span class="pl-k">..</span> <span class="pl-c1">sprint_r</span>(<span class="pl-c1">self</span>.<span class="pl-en">aa</span>:<span class="pl-c1">idevzDobb</span>()) <span class="pl-c"><span class="pl-c">--</span> .. sprint_r(self.parent.aaa) </span> <span class="pl-k">..</span> <span class="pl-smi">Registry</span>[<span class="pl-s"><span class="pl-pds">'</span>APP_NAME<span class="pl-pds">'</span></span>] <span class="pl-k">..</span> <span class="pl-c1">self</span>.<span class="pl-e">d</span> <span class="pl-k">end</span> <span class="pl-k">local</span> <span class="pl-smi">view</span> <span class="pl-k">=</span> <span class="pl-c1">self</span>:<span class="pl-c1">getView</span>() <span class="pl-k">local</span> <span class="pl-smi">p</span> <span class="pl-k">=</span> {} <span class="pl-smi">p</span>[<span class="pl-s"><span class="pl-pds">'</span>vanilla<span class="pl-pds">'</span></span>] <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>Welcome To Vanilla...<span class="pl-pds">' </span></span><span class="pl-k">..</span> <span class="pl-en">service</span>:<span class="pl-c1">get</span>() <span class="pl-smi">p</span>[<span class="pl-s"><span class="pl-pds">'</span>zhoujing<span class="pl-pds">'</span></span>] <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>Power by Openresty<span class="pl-pds">'</span></span> <span class="pl-en">view</span>:<span class="pl-c1">assign</span>(<span class="pl-smi">p</span>) <span class="pl-k">return</span> <span class="pl-en">view</span>:<span class="pl-c1">display</span>() <span class="pl-k">end</span> <span class="pl-k">return</span> <span class="pl-smi">IndexController</span></pre></div> idevz tag:github.com,2008:Repository/40606693/V0.1.0-rc6.0 2016-05-06T06:59:49Z V0.1.0-rc6.0 <p>update skeleton</p> idevz tag:github.com,2008:Repository/40606693/v0.1.0-rc5.0 2016-04-13T06:35:05Z V0.1.0-rc5.0 <p>New Features</p> <ul> <li>Multi applications deployment.</li> <li>Multi version of framework coexistence, easier framwork upgrade.</li> <li>Auto complete the Nginx configration.</li> <li>A convenient way to manage Services.</li> </ul> <p>1.install vanilla with its version, thus for easier updating.</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ git clone git@github.com:idevz/vanilla.git $ cd vanilla $ ./setup-framework -v $VANILLA_PROJ_ROOT -o $OPENRESTY_ROOT #see ./setup-framework -h for more details"><pre>$ git clone git@github.com:idevz/vanilla.git $ <span class="pl-c1">cd</span> vanilla $ ./setup-framework -v <span class="pl-smi">$VANILLA_PROJ_ROOT</span> -o <span class="pl-smi">$OPENRESTY_ROOT</span> <span class="pl-c"><span class="pl-c">#</span>see ./setup-framework -h for more details</span></pre></div> <p>after installation you can got two commands <code>vanilla-</code> and <code>v-console</code> which with a version number.</p> <p>2.Vanilla apps use thire own vhost conf both in development and production environment. You shoud give a full path(-a $VANILLA_APP_ROOT) to setup a Vanilla app.</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ ./setup-vanilal-demoapp [-a $VANILLA_APP_ROOT -u $VANILLA_APP_USER -g $VANILLA_APP_GROUP -e $VANILLA_RUNNING_ENV] #see ./setup-vanilal-demoapp -h for more details"><pre>$ ./setup-vanilal-demoapp [-a <span class="pl-smi">$VANILLA_APP_ROOT</span> <span class="pl-k">-u</span> <span class="pl-smi">$VANILLA_APP_USER</span> <span class="pl-k">-g</span> <span class="pl-smi">$VANILLA_APP_GROUP</span> <span class="pl-k">-e</span> <span class="pl-smi">$VANILLA_RUNNING_ENV</span>] <span class="pl-c"><span class="pl-c">#</span>see ./setup-vanilal-demoapp -h for more details</span></pre></div> <p>3.You can use va-{{vanilla app name}}-service script to manage each service.</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ ./$VANILLA_APP_ROOT/va-appname-service start"><pre>$ ./<span class="pl-smi">$VANILLA_APP_ROOT</span>/va-appname-service start</pre></div> idevz tag:github.com,2008:Repository/40606693/V0.1.0-rc5.0 2016-03-23T15:08:50Z V0.1.0-rc5.0: Merge pull request #43 from idevz/vanilla-0.1.0.rc5 <p>Vanilla 0.1.0.rc5</p> idevz tag:github.com,2008:Repository/40606693/V0.1.0-rc4.1 2016-03-23T15:15:08Z V0.1.0-rc4.1 <p>1.fix a bug about restful route,when get params from request<br> 2.add a way to parse request params<br> 3.The most important thing is V0.1.0-rc5.0 is coming, create this tag for this milepost.</p> idevz tag:github.com,2008:Repository/40606693/V0.1.0-rc4.0 2016-01-19T07:54:27Z V0.1.0-rc4.0 <ol> <li>LUA_PACKAGE_PATH Is not must</li> <li>update function buildconf to a instance method for multiple APP support</li> <li>update dispatcher when remove init operation, More segmentation request stage</li> <li>Add busted for unit test</li> <li>Add restful route 'vanilla.v.routes.restful'</li> <li>Add vanilla restar, reload commands</li> </ol> idevz tag:github.com,2008:Repository/40606693/V0.1.0-rc3.2 2016-01-15T04:36:43Z V0.1.0-rc3.2 <p>fix some bugs:<br> 1.Waf bug about "attempt to yield across C-call boundary"<br> 2.change lua file permissions to 644<br> 3.add BSD installnations<br> 4.update luarocks installnations<br> 5.update errinfo "Vanilla Inner Lpcall Err." and "Plugins Err"</p> idevz tag:github.com,2008:Repository/40606693/V0.1.0-rc3.1 2015-12-23T08:40:01Z V0.1.0-rc3.1 <p>update set_by_lua directive</p> idevz tag:github.com,2008:Repository/40606693/V0.1.0-rc3 2015-12-18T04:58:45Z V0.1.0-rc3 <p>Use "make" instead luarocks to install vanilla, make vanilla more easy to ues.<br> Reduce package dependency.<br> Implements a router and a set of pluggable routing protocol.<br> Specifies �nginx bin PATH for vanilla start or stop, Specifies lua or luajit bin PATH for vanilla command.<br> Pcall call local static functions instead of dynamic functions.<br> Ning conf file can use {{NGX_PATH}} as a config params.</p> idevz