{"_id":"railway","_rev":"245-84f209d631073c0838a3433e0ed81f31","name":"railway","dist-tags":{"latest":"2.0.17"},"versions":{"0.1.2":{"name":"railway","version":"0.1.2","author":{"name":"Anatoliy Chakkaev"},"description":"Railway features for Express.js framework","homepage":"http://github.com/1602/express-on-railway","engines":["node >= 0.3.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway"},"dependencies":{"ejs":">= 0.2.1","express":">= 2.2.2","nodeunit":">= 0.5.0"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"_id":"railway@0.1.2","_engineSupported":true,"_npmVersion":"0.3.18","_nodeVersion":"v0.5.0-pre","directories":{"lib":"./lib","bin":"./bin"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"9502121e8896f90f616e8e2e034715a4d472a452","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.2.tgz","integrity":"sha512-0PWd+kscC2APjoW02DVEsxu0A4rU6/D7e7xRE9v/sopG4dDnQr7OoyPOXEWgsBkdNdV5diz8EG+MT+BBrgyY5w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvZRDCMqt0LRQd98sZC/K56yCK9LNR4HxnEYSbQxqW+QIhAIbpdXyqCwW4dBNdnXq03YWIHHcrBlJ5B8XvGrZzA1l7"}]},"deprecated":"Install the Railway CLI from @railway/cli"},"0.1.3":{"name":"railway","version":"0.1.3","author":{"name":"Anatoliy Chakkaev"},"description":"Railway features for Express.js framework","homepage":"http://github.com/1602/express-on-railway","engines":["node >= 0.3.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway"},"dependencies":{"ejs":">= 0.2.1","express":">= 2.2.2","nodeunit":">= 0.5.0"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"_id":"railway@0.1.3","_engineSupported":true,"_npmVersion":"0.3.18","_nodeVersion":"v0.5.0-pre","directories":{"lib":"./lib","bin":"./bin"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"a221c7a5cd8ca3129531d715913dd52f7f30b93b","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.3.tgz","integrity":"sha512-DC2hYWGBcTzNqIE1urSi8k2dow7JmoDAGSNj4cCNp9C3LmfWchzlAzmAd88xpQxKoshh7noTJaXYlVOFlSsoCg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0/iycj0pj63+GAsL4Kf5ZA13YsDHLFnLUG1ud7nPqagIhAMuacppI48NvqH7ZTEzfFidMNRBTma1goWHsz1zRmy4N"}]},"deprecated":"Install the Railway CLI from @railway/cli"},"0.1.4":{"name":"railway","version":"0.1.4","author":{"name":"Anatoliy Chakkaev"},"description":"Railway features for Express.js framework","homepage":"http://github.com/1602/express-on-railway","engines":["node >= 0.3.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway"},"dependencies":{"ejs":">= 0.2.1","express":">= 2.2.2","nodeunit":">= 0.5.0"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"_id":"railway@0.1.4","_engineSupported":true,"_npmVersion":"0.3.18","_nodeVersion":"v0.5.0-pre","directories":{"lib":"./lib","bin":"./bin"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"488a4d966604815776132d3ae91fe9fdf5e21d44","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.4.tgz","integrity":"sha512-dxBbYRqok5tLYazTAvdk6Duwpag1k5xFEWWkCge5y/aOJBZZHDDNMv+51FqO/nNIFgbbvo2ayfkRh7cQi8EdoA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDXC5qqQCLj3hJAZZAQ4vKz23tYmnpKY8qwegZSfq6FDAiANiCxRNzMItPxC273EQkvB3JzbQ2PZoOWMj8fMqg+Jug=="}]},"deprecated":"Install the Railway CLI from @railway/cli"},"0.1.5":{"name":"railway","version":"0.1.5","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework","homepage":"http://github.com/1602/express-on-railway","engines":["node >= 0.3.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway"},"dependencies":{"ejs":">= 0.2.1","express":">= 2.2.2","nodeunit":">= 0.5.0","yaml":">= 0.1.2","coffee-script":">= 1.1.1"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"_id":"railway@0.1.5","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"2e714268975c9c3ef2857fee99cb5bdc24bfb932","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.5.tgz","integrity":"sha512-BLKoPvZvAoj3mV9Xcwml2RWKFu+a6gyT0rhJB0bWNJJej3GfBx08xbcVsgoWTH6RqB5wQYTQxc5fyiVPCJQoeg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEZFrGEqMBKoG9DWRLZph6GtkXrYw7avw8p8qtlHJZuSAiEAmCMeilTawdm3TmCFlQtHx/IohiTnQ5MyAxMyF3SbLGo="}]},"scripts":{},"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.1.5-10":{"name":"railway","version":"0.1.5-10","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework","homepage":"http://github.com/1602/express-on-railway","engines":["node >= 0.3.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway"},"dependencies":{"ejs":">= 0.2.1","express":">= 2.2.2","nodeunit":">= 0.5.0","yaml":">= 0.1.2","coffee-script":">= 1.1.1"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"_id":"railway@0.1.5-10","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"04d8db8203d544fda803cd1ff71b9b9da8dd3d61","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.5-10.tgz","integrity":"sha512-WiX92cdjnnXkQC+IkOcqp1QjMELjUgyc0CDzz8WFX0eM3DTQin7YM33OxHFwEDoWHYmaOLG1cxFLHm47UBDD6g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCznSlyK0AF/S+7N1HzgcE9hzmMfXJ9EzGG+iekusYBQwIgapJcO4rDj4Qy2qSf9uEdDmgKRvhAaAM77GWJAmWOmFo="}]},"scripts":{},"directories":{}},"0.1.6":{"name":"railway","version":"0.1.6","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework","homepage":"http://github.com/1602/express-on-railway","engines":["node >= 0.3.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway"},"dependencies":{"ejs":">= 0.2.1","express":">= 2.2.2","nodeunit":">= 0.5.0","yaml":">= 0.1.2","coffee-script":">= 1.1.1"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"_id":"railway@0.1.6","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"3064ad38b8f607d0ff5c92c3b8b7175b6da37fc6","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.6.tgz","integrity":"sha512-QdQ5dJsVE6ugG5JOXcTOilxhdUbHAi1xuwuB/mVVPEVhrDdKWBdB5wcAzwGhhOKX6QdNDM/sTY3LN6ox8N5ZmA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZUk5rNeDeLdx99SOEgaH0hMjW8U7f/T7AcOZ4ICbUbAiAPKqkwiZ33u1a+nIoiS/RkpN0c0p9iZd4Ofu6St7TdgA=="}]},"scripts":{},"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.1.6-1":{"name":"railway","version":"0.1.6-1","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework","homepage":"http://github.com/1602/express-on-railway","engines":["node >= 0.3.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway"},"dependencies":{"ejs":">= 0.2.1","express":">= 2.2.2","nodeunit":">= 0.5.0","yaml":">= 0.1.2","coffee-script":">= 1.1.1"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"_id":"railway@0.1.6-1","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"e7cd48a726b24c025393d1cbfbadefb3dcfa3c7c","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.6-1.tgz","integrity":"sha512-GgDOfT2y8KZ0yiuOCibdVEYqKxmrbikWk0c2pRZpyb7IBaVm9wLZ49PDU29WgdWNfXow3F3CqMqVqySseLEgkQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAmNvwT6KiYNDBhm0F3z9ZyVyOxlABEox2YerkqNTv08AiAOwQG4UDtaHYhG27IbbkS+yqpT7RJjZlnxEdLOamINHQ=="}]},"scripts":{},"directories":{}},"0.1.6-2":{"name":"railway","version":"0.1.6-2","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework","homepage":"http://github.com/1602/express-on-railway","engines":["node >= 0.3.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway"},"dependencies":{"ejs":">= 0.2.1","express":">= 2.2.2","nodeunit":">= 0.5.0","yaml":">= 0.1.2","coffee-script":">= 1.1.1"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"_id":"railway@0.1.6-2","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"c754317c61dd504fc3dbbfc0425e7e5b29a1a974","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.6-2.tgz","integrity":"sha512-DPHqSiUo+VF2OekJuoEVZo+ndehtazemu5Lm1gyrD33SLjlWiinlVpWltAY9VvhMCPh0W7GRpmKsByJmK3P8mg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTRD1YzmGOfdHos+g30hQ/Q17OMy1ZTwOVBXmJ+nNxmAIhAMfWc9w8pLuapAbkdnmLLrYj7Ts/u10eaRPbnDzxBspq"}]},"scripts":{},"directories":{}},"0.1.7-5":{"name":"railway","version":"0.1.7-5","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework","homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway"},"dependencies":{"ejs":">= 0.2.1","ejs-ext":">= 0.0.3","jade-ext":">= 0.0.1","express":">= 2.2.2","nodeunit":">= 0.5.0","yaml":">= 0.1.2","coffee-script":">= 1.1.1"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"scripts":{"test":"nodeunit test"},"_npmJsonOpts":{"file":"/home/anatoliy/.npm/railway/0.1.7-5/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"railway@0.1.7-5","_engineSupported":true,"_npmVersion":"1.0.13","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"3d70290aa1135841f751c8bc808c4c48c47d66a7","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.7-5.tgz","integrity":"sha512-DLg+iL1Yt1Iz6XcP3PpzLtTeFuMewHBlESRRjmzQtsZVMhAjU1hzPMqJS3aUgOw49k/N1GDXokD3uI2VWp1CgQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDn8Zi1IRGSqhCNMGNlFcZycb1zu3ptGihQPoOCkpnE4QIhAKOLssxBx15/H3HqCVuvVUUjRuE8B07cf1iVYCFSp+pA"}]},"directories":{}},"0.1.7-6":{"name":"railway","version":"0.1.7-6","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway"},"dependencies":{"ejs":">= 0.2.1","ejs-ext":">= 0.0.3","jade-ext":">= 0.0.1","express":">= 2.2.2","nodeunit":">= 0.5.0","yaml":">= 0.1.2","coffee-script":">= 1.1.1"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"scripts":{"test":"nodeunit test"},"_npmJsonOpts":{"file":"/home/anatoliy/.npm/railway/0.1.7-6/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"railway@0.1.7-6","_engineSupported":true,"_npmVersion":"1.0.13","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"69b707702d5dfb40903215fb5d04c1d7b3798286","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.7-6.tgz","integrity":"sha512-YVO1sqCmcCTgw/fAgiJSYr60jBFJ9mtsCMSQRWgPyfJXLuadK6qxLsfjQf+VmWZmMpfsK8rwjruH6XVc+lnd5w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGVk+cnxWmj3CPFCjh+FjcSOKGVc/OzDxUU5QlB85CGiAiEA08E5pxqNaQhoEkpt6hgi1ZPeglM53WpBdlw1ff515hw="}]},"directories":{}},"0.1.7-7":{"name":"railway","version":"0.1.7-7","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway"},"dependencies":{"ejs":">= 0.2.1","ejs-ext":">= 0.0.3","jade-ext":">= 0.0.1","jade":">= 0","express":">= 2.2.2","nodeunit":">= 0.5.0","yaml":">= 0.1.2","coffee-script":">= 1.1.1"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"scripts":{"test":"nodeunit test"},"_npmJsonOpts":{"file":"/Users/anatoliy/.npm/railway/0.1.7-7/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"railway@0.1.7-7","_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"12962cde9cd1be09010d8e8f768bb1aad83b9f69","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.7-7.tgz","integrity":"sha512-rQmzDLezXsfLZRflq2oIg4uFIlB4GRxl7lBKLB2yb09eElysMC0EuC/21LnOp1N396JpRrAx2EnotsOXoiYAAg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQ8tSnv0cjWdji+R2R4cz2PugevSfzGJ0vf1xyj4dkLQIgGbj5q3fa7vBJelElYBAROxGsIx2y5NO7DyFJd4yQe1g="}]},"directories":{}},"0.1.7-8":{"name":"railway","version":"0.1.7-8","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway"},"dependencies":{"express":">= 2.2.2","yaml":">= 0.1.2","coffee-script":">= 1.1.1"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"scripts":{"test":"nodeunit test"},"_npmJsonOpts":{"file":"/Users/anatoliy/.npm/railway/0.1.7-8/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"railway@0.1.7-8","_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"f6a98d98363b36343c61fd12f4468d4ea863f5d4","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.7-8.tgz","integrity":"sha512-FlyX6rhZYX3BcqWNYrWDJwpBwUo6DoIKo4O4k4ooOIgTLVS70Ut9miJt6cI/whIyJ3fw3M5oKpQN1XGDoO28nQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDkkKXzEYtKvhVMUPteZz09g24NfqRHtqJvI37cMzDCoAiEAhZ1maxBkpzjRWZSLyRL596E6VWcSyE0X3DtA4jTkiUM="}]},"directories":{}},"0.1.8":{"name":"railway","version":"0.1.8","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"connect":">= 0","socket.io":">= 0","express":">= 2.2.2","yaml":">= 0.1.2","coffee-script":">= 1.1.1","qs":">= 0","mime":">= 0","ejs-ext":">= 0.0.4","jade-ext":">= 0.0.2"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"scripts":{"test":"nodeunit test"},"_npmJsonOpts":{"file":"/Users/anatoliy/.npm/railway/0.1.8/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"railway@0.1.8","_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"fbf879fb3a3906be559de01fadd50395f785377f","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.8.tgz","integrity":"sha512-6RWkmyzjMNsoOlBajb/VJC0peFFuW9dxHbJV7OlNKEn1UjUqCw+7Bzkv46vpLN9EYoRWoC8ZaoFn+tESR3Ii4g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFZv+5m1d2WiHOyET/cwr5LQr2r2FLtPVLNSNPRolJeTAiBNUwhXMoo8RZcctO8UtkYaep05I6eCL5HoybF//XH1Zw=="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.0":{"name":"railway","version":"0.2.0","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.6.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"connect":">= 0","jugglingdb":">= 0.0.6","express":">= 2.5.0","yaml":">= 0.1.2","coffee-script":">= 1.1.1","qs":">= 0","mime":">= 0","ejs-ext":">= 0.0.4","jade-ext":">= 0.0.2"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"scripts":{"test":"nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.0","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"e8121fdc561cc90575bf7d522b8a03a2ec2ea98a","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.0.tgz","integrity":"sha512-LR4k+t15WPKHVYLjmCXacRr07vunWJW0OBJ169ewRr9/bWsU76HhQKG0de9yTr00t+PXGW/RyGCE0RaFVVYc+Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZYbjgDFv9CoA/ROIs6sPN2e04/DCSetUTZ2yAuK0E5AiB2fTABcHdzoeskzIJd7Yee3rOHfizqzHYGI/dBdgAWzA=="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.1":{"name":"railway","version":"0.2.1","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.6.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"connect":">= 0","jugglingdb":">= 0.0.6","express":">= 2.5.0","yaml":">= 0.1.2","coffee-script":">= 1.1.1","qs":">= 0","mime":">= 0","ejs-ext":">= 0.0.4","ejs":">= 0","jade-ext":">= 0.0.2","jade":">= 0"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"scripts":{"test":"nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.1","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"193ba6b5fbc1589cd399c46175ae66507aac357c","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.1.tgz","integrity":"sha512-WUh1QVzq5lENXkzobL6wF+aCaL2yfXtsiMk6HxSkKVGTSbLaBGrtCKh4eMNmYfh9VgROVUwiumvVCDBKXlpzEw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBeGqc/19CGAfWc2KunOzNawXqlCh6LJPMur6483UZowIgGB9FdNoc/4askPWkTxXPE+AAMPjgO5jWkWjppZVhZyU="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.3":{"name":"railway","version":"0.2.3","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.6.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"connect":">= 0","jugglingdb":">= 0.0.6","express":">= 2.5.0","yaml":">= 0.1.2","coffee-script":">= 1.1.1","qs":">= 0","mime":">= 0","ejs-ext":">= 0","jade-ext":">= 0"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"scripts":{"test":"nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.3","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"a6c8071b04bc247d25926d28f5b324d940dd5ff7","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.3.tgz","integrity":"sha512-hL1EmQXQKHmbqiToUTzU/du9VlX2K2Y4oPssQe4RJHixvbn3rE16ongd7noAffcrRj6b9T1j8Eeh9NX9LyB4eg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgJatd+jPejW1t7+HAADMV/VPCqRtARV4H5A4fXBDQwwIgNYx4PrOTwGi/3k6yZ1fL4La6NH3tJfH4CSEsutlS4rs="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.6":{"name":"railway","version":"0.2.6","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"jugglingdb":">= 0.0.6","yaml":">= 0.1.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.2"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"scripts":{"test":"nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.6","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"f63e4b501c7b69c56014e355141e06c3b3349947","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.6.tgz","integrity":"sha512-jEcWGmWJ6FgU8G/AfTiF/+YyJVjz+iDrAfnV90TOukA01Sdb+bEWaaPD7NagNIihtiu4zph2ynUai2+us15vcw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHQ4mpAMArwurgl+5KvsfJ3SKYDg4RhpzeLDv5V22b7nAiEAuJCZZwEu/mFYTR4ajqPwYRvlhisC7R4XTF5//qTqktY="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.7":{"name":"railway","version":"0.2.7","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"jugglingdb":">= 0.0.6","yaml":">= 0.1.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.2","express":">= 2.2.2"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"nodeunit":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.7","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"643abfc53a4d3513eb9f95b6b2ec19de8755b732","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.7.tgz","integrity":"sha512-e/WF3/y1EeU02q2VAjPCkIRZVnMgX5PUeSMPlKcUCEdfPxlyGt/v23nmjjfE8P7IdfBiAkeb/DZlobfxh84PcA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDheAYxrwGSHZ2FVpVpKayoIWxPAqJ2VEKyZyfO7JxELgIhALNZIJeYCVy+QaWtHR+h+ekDlZgmPmB/Jq7AP4Vp0FMR"}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.8":{"name":"railway","version":"0.2.8","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"jugglingdb":">= 0.0.6","yaml":">= 0.1.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.4","express":">= 2.2.2"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"nodeunit":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.8","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"3464fe1eccb58e63f64ed37ee5f4a9f67e56e878","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.8.tgz","integrity":"sha512-+OC2AXda3vb9tmB5JR8oHxkFhpXiFFP+ATjk1JE6kdPbYCs9BJOoVwZ+1Kgwtsq80fAKAdhKT3XgQshYrBQwIg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGxALM4HRhUecm9CJco7BOQjykDugZT7g/b7gKszje/hAiEAnsWnez++XYqZT5IHJxx1LxBHhOUVNy27zZK9fI5rrS4="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.9":{"name":"railway","version":"0.2.9","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"jugglingdb":">= 0.1.0","yaml":">= 0.1.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.4","express":">= 2.2.2"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"nodeunit":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.9","_engineSupported":true,"_npmVersion":"1.0.105","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"a50d311ffabf07045686a2862f41a322b40186bc","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.9.tgz","integrity":"sha512-hsrlq4BEJfBF26MxTf5orywn6B8cEndQJiL/Kcj6rRwmoYRV9w/Z41b5CFx03WuBDrIqiTxKwYlTPG9SitqYVw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCof2Qopu2+PEah4DQjQSH/JE0ebpkd4oGU1rfK6obKvwIgZpKoqEysk95ecMEnxjnRJbAOSA/OtWBlHgA8udtFoa4="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.10":{"name":"railway","version":"0.2.10","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"jugglingdb":">= 0.1.2","yaml":">= 0.1.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.4","express":">= 2.2.2"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"nodeunit":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.10","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"8390e8422fdaea5033ef436e827ccb23fffb5121","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.10.tgz","integrity":"sha512-GzJVNHREtLsVxT0ThQ7HSuwLHBrFouJwDPQYqpKmi9QsYUqGhoM8yOPApSNMKodeGdgyME3Ga5DY1iWK0SqKNQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCH2LmwqBkVMXnJhzdMi7kXm4H3Qq15so1gR3E1DQ4lAoCIQDgB0TfDsGKz5BJNTl/gIeymrWavcc/gAFmTyJoDwWz9w=="}]},"readme":"About [<img src=\"https://secure.travis-ci.org/1602/express-on-railway.png\" />](http://travis-ci.org/#!/1602/express-on-railway)\n=====\n\nRailwayJS - MVC framework based on Exress. Ruby-on-Rails inspired. It allows you to build web application in minutes.  \n\nInstallation\n============\n\nOption 1: npm\n\n    $ sudo npm install railway -g\n\nOption 2: GitHub\n\n    $ git clone git://github.com/1602/express-on-railway.git\n    $ cd express-on-railway\n    $ git submodule update --init\n    $ npm link\n\nUsage\n=====\n\n    # initialize app\n    $ railway init blog && cd blog\n    $ npm install -l\n\n    # generate scaffold\n    $ railway generate crud post title content published:boolean\n\n    # run server on port 3000\n    $ railway s 3000\n\n    # visit appp\n    $ open http://localhost:3000/posts\n\n## Participation\n\nCheck status of project on trello board: https://trello.com/board/railwayjs/4f0a0d49128365065e008a1d\nFeel free to vote and comment on cards (tickets/issues), if you want to join team -- send me a message with your email.\n\nShort functionality review\n==========================\n\nCLI tool\n--------\n\n    Usage: railway command [argument(s)]\n\n    Commands:\n      h,  help                     Display usage information\n      i,  init                     Initialize railway app\n      g,  generate [smth]          Generate something awesome\n      r,  routes [filter]          Display application routes\n      c,  console                  Debug console\n      s,  server [port]            Run railway server\n      x,  install gitUrl [extName] Install railway eXtension\n\n**railway init [appname][ key(s)]**\n    keys:\n    --coffee                 # Default: no coffee by default\n    --tpl jade|ejs           # Default: ejs\n    --db redis|mongoose|riak # Default: mongoose\n\n**railway generate smth** - smth = generator name (controller, model, scaffold, ...can be extended via plugins)\n\nbuiltin generator: model\n`railway g model user email password approved:boolean` # generate User model with fields user, password: String, approved: Boolean\n`railway g post title content --coffee` # generate Post model in coffee script syntax\n\nbuiltin generator: scaffold (crud)\n`railway g scaffold todo title done:boolean --coffee` # generate scaffold for Todo model (title: String, done: Boolean)\n\nbuiltin generator: controller\n`railway g controller sessions new create destroy` # generate sessions controller with actions and views\n\n**railway server 8000** or **PORT=8000 node server** - run server on port `8000`\n\n**railway c** - run debugging console (see details below)\n\n**railway r** - print routes map (see details below)\n\n\nDirectory structure\n-------------------\n\nOn initialization rails-like directories tree generated, like that:\n\n    .\n    |-- app\n    |   |-- controllers\n    |   |   |-- admin\n    |   |   |   |-- categories_controller.js\n    |   |   |   |-- posts_controller.js\n    |   |   |   `-- tags_controller.js\n    |   |   |-- comments_controller.js\n    |   |   `-- posts_controller.js\n    |   |-- models\n    |   |   |-- category.js\n    |   |   |-- post.js\n    |   |   `-- tag.js\n    |   |-- views\n    |   |   |-- admin\n    |   |   |   `-- posts\n    |   |   |       |-- edit.ejs\n    |   |   |       |-- index.ejs\n    |   |   |       |-- new.ejs\n    |   |   |-- layouts\n    |   |   |   `-- application_layout.ejs\n    |   |   |-- partials\n    |   |   `-- posts\n    |   |       |-- index.ejs\n    |   |       `-- show.ejs\n    |   `-- helpers\n    |       |-- admin\n    |       |   |-- posts_helper.js\n    |       |   `-- tags_helper.js\n    |       `-- posts_helper.js\n    `-- config\n        |-- database.json\n        |-- routes.js\n        |-- tsl.cert\n        `-- tsl.key\n\nHTTPS Support\n-------------\n\nJust place your key and cert into config directory, railway will use it.\nDefault names for keys are `tsl.key` and `tsl.cert`, but you can store in in another place, in that case just pass filenames to createServer function:\n`server.js`\n\n    require('railway').createServer({key: '/tmp/key.pem', cert: '/tmp/cert.pem'});\n\nFew helpful commands:\n\n    # generate private key\n    openssl genrsa -out config/tsl.key\n    # generate cert\n    openssl req -new -x509 -key config/tsl.key  -out config/tsl.cert -days 1095 -batch\n\nRouting\n-------\n\nNow we do not have to tediously describe REST rotes for each resource, enough to write in `config/routes.js` code like this:\n\n    exports.routes = function (map) {\n        map.resources('posts', function (post) {\n            post.resources('comments');\n        });\n    };\n\ninstead of:\n\n    var ctl = require('./lib/posts_controller.js');\n    app.get('/posts/new.:format?', ctl.new);\n    app.get('/posts.:format?', ctl.index);\n    app.post('/posts.:format?', ctl.create);\n    app.get('/posts/:id.:format?', ctl.show);\n    app.put('/posts/:id.:format?', ctl.update);\n    app.delete('/posts/:id.:format?', ctl.destroy);\n    app.get('/posts/:id/edit.:format?', ctl.edit);\n\n    var com_ctl = require('./lib/comments_controller.js');\n    app.get('/posts/:post_id/comments/new.:format?', com_ctl.new);\n    app.get('/posts/:post_id/comments.:format?', com_ctl.index);\n    app.post('/posts/:post_id/comments.:format?', com_ctl.create);\n    app.get('/posts/:post_id/comments/:id.:format?', com_ctl.show);\n    app.put('/posts/:post_id/comments/:id.:format?', com_ctl.update);\n    app.delete('/posts/:post_id/comments/:id.:format?', com_ctl.destroy);\n    app.get('/posts/:post_id/comments/:id/edit.:format?', com_ctl.edit);\n\nand you can more finely tune the resources to specify certain actions, middleware, and other. Here example routes of [my blog][1]:\n\n    exports.routes = function (map) {\n        map.get('/', 'posts#index');\n        map.get(':id', 'posts#show');\n        map.get('sitemap.txt', 'posts#map');\n    \n        map.namespace('admin', function (admin) {\n            admin.resources('posts', {middleware: basic_auth, except: ['show']}, function (post) {\n                post.resources('comments');\n                post.get('likes', 'posts#likes')\n            });\n        });\n    };\n\nsince version 0.2.0 it is possible to use generic routes:\n\n    exports.routes = function (map) {\n        map.get(':controller/:action/:id');\n        map.all(':controller/:action');\n    };\n\nif you have `custom_controller` with `test` action inside it you can now do:\n\n    GET /custom/test\n    POST /custom/test\n    GET /custom/test/1 // also sets params.id to 1\n\nfor debugging routes described in `config/routes.js` you can use `railway routes` command:\n\n    $ railway routes\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n         admin_posts POST   /admin/posts.:format?           admin/posts#create\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n          admin_post DELETE /admin/posts/:id.:format?       admin/posts#destroy\n          admin_post PUT    /admin/posts/:id.:format?       admin/posts#update\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\nFilter by method:\n\n    $ railway routes GET\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n\nFilter by helper name:\n\n    $ railway routes _admin\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\n\nHelpers\n-------\n\nIn addition to regular rails helpers `link_to`, `form_for`, `javascript_include_tag`, `form_for`, etc. there are also helpers for routing: each route generates a helper method that can be invoked in a view:\n\n    <%- link_to(\"New post\", new_admin_post) %>\n    <%- link_to(\"New post\", edit_admin_post(post)) %>\n\ngenerates output:\n\n    <a href=\"/admin/posts/new\">New post</a>\n    <a href=\"/admin/posts/10/edit\">New post</a>\n\nControllers\n-----------\n\nThe controller is a module containing the declaration of actions such as this:\n\n    beforeFilter(loadPost, {only: ['edit', 'update', 'destroy']});\n\n    action('index', function () {\n        Post.allInstances({order: 'created_at'}, function (collection) {\n            render({ posts: collection });\n        });\n    });\n\n    action('create', function () {\n        Post.create(req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    action('new', function () {\n        render({ post: new Post });\n    });\n\n    action('edit', function () {\n        render({ post: request.post });\n    });\n\n    action('update', function () {\n        request.post.save(req.locale, req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    function loadPost () {\n        Post.find(req.params.id, function () {\n            request.post = this;\n            next();\n        });\n    }\n\n## Generators ##\n\nRailway offers several built-in generators: for a model, controller and for \ninitialization. Can be invoked as follows:\n\n    railway generate [what] [params]\n\n`what` can be `model`, `controller` or `scaffold`. Example of controller generation:\n\n    $ railway generate controller admin/posts index new edit update\n    exists  app/\n    exists  app/controllers/\n    create  app/controllers/admin/\n    create  app/controllers/admin/posts_controller.js\n    create  app/helpers/\n    create  app/helpers/admin/\n    create  app/helpers/admin/posts_helper.js\n    exists  app/views/\n    create  app/views/admin/\n    create  app/views/admin/posts/\n    create  app/views/admin/posts/index.ejs\n    create  app/views/admin/posts/new.ejs\n    create  app/views/admin/posts/edit.ejs\n    create  app/views/admin/posts/update.ejs\n\nCurrently it generates only `*.ejs` views\n\nModels\n------\n\nCheckout [JugglingDB][2] docs to see how to work with models.\n\nREPL console\n------------\n\nTo run REPL console use command\n\n    railway console\n\nor it's shortcut\n\n    railway c\n\nIt just simple node-js console with some Railway bindings, e.g. models. Just one note\nabout working with console. Node.js is asynchronous by its nature, and it's great\nbut it made console debugging much more complicated, because you should use callback\nto fetch result from database, for example. I have added one useful method to\nsimplify async debugging using railway console. It's name `c`, you can pass it\nas parameter to any function requires callback, and it will store parameters passed\nto callback to variables `_0, _1, ..., _N` where N is index in `arguments`.\n\nExample:\n\n    railway c\n    railway> User.find(53, c)\n    Callback called with 2 arguments:\n    _0 = null\n    _1 = [object Object]\n    railway> _1\n    { email: [Getter/Setter],\n      password: [Getter/Setter],\n      activationCode: [Getter/Setter],\n      activated: [Getter/Setter],\n      forcePassChange: [Getter/Setter],\n      isAdmin: [Getter/Setter],\n      id: [Getter/Setter] }\n\nLocalization\n------------\n\nTo add another language to app just create yml file in `config/locales`,\nfor example `config/locales/jp.yml`, copy contents of `config/locales/en.yml` to new\nfile and rename root node (`en` to `jp` in that case), also in `lang` section rename\n`name` to Japanese (for example).\n\nNext step - rename email files in `app/views/emails`, copy all files `*.en.html` \nand `*.en.text` to `*.jp.html` and `*.jp.text` and translate new files.\n\nNOTE: translation can contain `%` symbol(s), that means variable substitution\n\nLogger\n-----\n\n    app.set('quiet', true); // force logger to log into `log/#{app.settings.env}.log`\n    railway.logger.write(msg); // to log message\n\nConfiguring\n===========\n\nRailway has some configuration options allows to customize app behavior\n\neval cache\n----------\n\nEnable controllers caching, should be turned on in prd. In development mode\ndisabling cache allows to avoid server restarting after each model/controller change\n\n    app.disable('eval cache'); // in config/environments/development.js\n    app.enable('eval cache'); // in config/environments/production.js\n\nmodel cache\n-----------\n\nSame option for models. When disabled model files evaluated per each request.\n\n    app.disable('model cache'); // in config/environments/development.js\n\nview cache\n----------\n\nExpress.js option, enables view caching.\n\n    app.disable('view cache'); // in config/environments/development.js\n\nquiet\n-----\n\nWrite logs to `log/NODE_ENV.log`\n\n    app.set('quiet', true); // in config/environments/test.js\n\nmerge javascripts\n-----------------\n\nJoin all javascript files listed in `javascript_include_tag` into one\n\n    app.enable('merge javascripts'); // in config/environments/production.js\n\nmerge stylesheets\n-----------------\n\nJoin all stylesheet files listed in `stylesheets_include_tag` into one\n\n    app.enable('merge stylesheets'); // in config/environments/production.js\n\nMIT License\n===========\n\n    Copyright (C) 2011 by Anatoliy Chakkaev\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n\n\n  [1]: http://node-js.ru\n  [2]: https://github.com/1602/jugglingdb\n","maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.11":{"name":"railway","version":"0.2.11","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"jugglingdb":">= 0.1.3","yaml":">= 0.1.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.4","express":">= 2.2.2"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"nodeunit":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.11","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"2f08d3252ffe5f6a8e324ed5ef61eb7d2ce21141","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.11.tgz","integrity":"sha512-EntyjiyjssPZE7i6QkFoQiLwmeDgtqeJXA9V+xrhSlvpo0BW9jpste1Up4je9TSSDGmkv97lPRt0UiHux2pfDw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgjGQShcLoCz6pXEOXfADX5wvnEP3Je8eZ2NNDyjmYAQIhALE+AhqRF61Olgy7Sa5CaX54u6L43cWRrfwpJLJ93ClH"}]},"readme":"About [<img src=\"https://secure.travis-ci.org/1602/express-on-railway.png\" />](http://travis-ci.org/#!/1602/express-on-railway)\n=====\n\nRailwayJS - MVC framework based on Exress. Ruby-on-Rails inspired. It allows you to build web application in minutes.  \n\nInstallation\n============\n\nOption 1: npm\n\n    $ sudo npm install railway -g\n\nOption 2: GitHub\n\n    $ git clone git://github.com/1602/express-on-railway.git\n    $ cd express-on-railway\n    $ git submodule update --init\n    $ npm link\n\nUsage\n=====\n\n    # initialize app\n    $ railway init blog && cd blog\n    $ npm install -l\n\n    # generate scaffold\n    $ railway generate crud post title content published:boolean\n\n    # run server on port 3000\n    $ railway s 3000\n\n    # visit appp\n    $ open http://localhost:3000/posts\n\n## Participation\n\nCheck status of project on trello board: https://trello.com/board/railwayjs/4f0a0d49128365065e008a1d\nFeel free to vote and comment on cards (tickets/issues), if you want to join team -- send me a message with your email.\n\nShort functionality review\n==========================\n\nCLI tool\n--------\n\n    Usage: railway command [argument(s)]\n\n    Commands:\n      h,  help                     Display usage information\n      i,  init                     Initialize railway app\n      g,  generate [smth]          Generate something awesome\n      r,  routes [filter]          Display application routes\n      c,  console                  Debug console\n      s,  server [port]            Run railway server\n      x,  install gitUrl [extName] Install railway eXtension\n\n**railway init [appname][ key(s)]**\n    keys:\n    --coffee                 # Default: no coffee by default\n    --tpl jade|ejs           # Default: ejs\n    --db redis|mongoose|riak # Default: mongoose\n\n**railway generate smth** - smth = generator name (controller, model, scaffold, ...can be extended via plugins)\n\nbuiltin generator: model\n`railway g model user email password approved:boolean` # generate User model with fields user, password: String, approved: Boolean\n`railway g post title content --coffee` # generate Post model in coffee script syntax\n\nbuiltin generator: scaffold (crud)\n`railway g scaffold todo title done:boolean --coffee` # generate scaffold for Todo model (title: String, done: Boolean)\n\nbuiltin generator: controller\n`railway g controller sessions new create destroy` # generate sessions controller with actions and views\n\n**railway server 8000** or **PORT=8000 node server** - run server on port `8000`\n\n**railway c** - run debugging console (see details below)\n\n**railway r** - print routes map (see details below)\n\n\nDirectory structure\n-------------------\n\nOn initialization rails-like directories tree generated, like that:\n\n    .\n    |-- app\n    |   |-- controllers\n    |   |   |-- admin\n    |   |   |   |-- categories_controller.js\n    |   |   |   |-- posts_controller.js\n    |   |   |   `-- tags_controller.js\n    |   |   |-- comments_controller.js\n    |   |   `-- posts_controller.js\n    |   |-- models\n    |   |   |-- category.js\n    |   |   |-- post.js\n    |   |   `-- tag.js\n    |   |-- views\n    |   |   |-- admin\n    |   |   |   `-- posts\n    |   |   |       |-- edit.ejs\n    |   |   |       |-- index.ejs\n    |   |   |       |-- new.ejs\n    |   |   |-- layouts\n    |   |   |   `-- application_layout.ejs\n    |   |   |-- partials\n    |   |   `-- posts\n    |   |       |-- index.ejs\n    |   |       `-- show.ejs\n    |   `-- helpers\n    |       |-- admin\n    |       |   |-- posts_helper.js\n    |       |   `-- tags_helper.js\n    |       `-- posts_helper.js\n    `-- config\n        |-- database.json\n        |-- routes.js\n        |-- tsl.cert\n        `-- tsl.key\n\nHTTPS Support\n-------------\n\nJust place your key and cert into config directory, railway will use it.\nDefault names for keys are `tsl.key` and `tsl.cert`, but you can store in in another place, in that case just pass filenames to createServer function:\n`server.js`\n\n    require('railway').createServer({key: '/tmp/key.pem', cert: '/tmp/cert.pem'});\n\nFew helpful commands:\n\n    # generate private key\n    openssl genrsa -out config/tsl.key\n    # generate cert\n    openssl req -new -x509 -key config/tsl.key  -out config/tsl.cert -days 1095 -batch\n\nRouting\n-------\n\nNow we do not have to tediously describe REST rotes for each resource, enough to write in `config/routes.js` code like this:\n\n    exports.routes = function (map) {\n        map.resources('posts', function (post) {\n            post.resources('comments');\n        });\n    };\n\ninstead of:\n\n    var ctl = require('./lib/posts_controller.js');\n    app.get('/posts/new.:format?', ctl.new);\n    app.get('/posts.:format?', ctl.index);\n    app.post('/posts.:format?', ctl.create);\n    app.get('/posts/:id.:format?', ctl.show);\n    app.put('/posts/:id.:format?', ctl.update);\n    app.delete('/posts/:id.:format?', ctl.destroy);\n    app.get('/posts/:id/edit.:format?', ctl.edit);\n\n    var com_ctl = require('./lib/comments_controller.js');\n    app.get('/posts/:post_id/comments/new.:format?', com_ctl.new);\n    app.get('/posts/:post_id/comments.:format?', com_ctl.index);\n    app.post('/posts/:post_id/comments.:format?', com_ctl.create);\n    app.get('/posts/:post_id/comments/:id.:format?', com_ctl.show);\n    app.put('/posts/:post_id/comments/:id.:format?', com_ctl.update);\n    app.delete('/posts/:post_id/comments/:id.:format?', com_ctl.destroy);\n    app.get('/posts/:post_id/comments/:id/edit.:format?', com_ctl.edit);\n\nand you can more finely tune the resources to specify certain actions, middleware, and other. Here example routes of [my blog][1]:\n\n    exports.routes = function (map) {\n        map.get('/', 'posts#index');\n        map.get(':id', 'posts#show');\n        map.get('sitemap.txt', 'posts#map');\n    \n        map.namespace('admin', function (admin) {\n            admin.resources('posts', {middleware: basic_auth, except: ['show']}, function (post) {\n                post.resources('comments');\n                post.get('likes', 'posts#likes')\n            });\n        });\n    };\n\nsince version 0.2.0 it is possible to use generic routes:\n\n    exports.routes = function (map) {\n        map.get(':controller/:action/:id');\n        map.all(':controller/:action');\n    };\n\nif you have `custom_controller` with `test` action inside it you can now do:\n\n    GET /custom/test\n    POST /custom/test\n    GET /custom/test/1 // also sets params.id to 1\n\nfor debugging routes described in `config/routes.js` you can use `railway routes` command:\n\n    $ railway routes\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n         admin_posts POST   /admin/posts.:format?           admin/posts#create\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n          admin_post DELETE /admin/posts/:id.:format?       admin/posts#destroy\n          admin_post PUT    /admin/posts/:id.:format?       admin/posts#update\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\nFilter by method:\n\n    $ railway routes GET\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n\nFilter by helper name:\n\n    $ railway routes _admin\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\n\nHelpers\n-------\n\nIn addition to regular rails helpers `link_to`, `form_for`, `javascript_include_tag`, `form_for`, etc. there are also helpers for routing: each route generates a helper method that can be invoked in a view:\n\n    <%- link_to(\"New post\", new_admin_post) %>\n    <%- link_to(\"New post\", edit_admin_post(post)) %>\n\ngenerates output:\n\n    <a href=\"/admin/posts/new\">New post</a>\n    <a href=\"/admin/posts/10/edit\">New post</a>\n\nControllers\n-----------\n\nThe controller is a module containing the declaration of actions such as this:\n\n    beforeFilter(loadPost, {only: ['edit', 'update', 'destroy']});\n\n    action('index', function () {\n        Post.allInstances({order: 'created_at'}, function (collection) {\n            render({ posts: collection });\n        });\n    });\n\n    action('create', function () {\n        Post.create(req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    action('new', function () {\n        render({ post: new Post });\n    });\n\n    action('edit', function () {\n        render({ post: request.post });\n    });\n\n    action('update', function () {\n        request.post.save(req.locale, req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    function loadPost () {\n        Post.find(req.params.id, function () {\n            request.post = this;\n            next();\n        });\n    }\n\n## Generators ##\n\nRailway offers several built-in generators: for a model, controller and for \ninitialization. Can be invoked as follows:\n\n    railway generate [what] [params]\n\n`what` can be `model`, `controller` or `scaffold`. Example of controller generation:\n\n    $ railway generate controller admin/posts index new edit update\n    exists  app/\n    exists  app/controllers/\n    create  app/controllers/admin/\n    create  app/controllers/admin/posts_controller.js\n    create  app/helpers/\n    create  app/helpers/admin/\n    create  app/helpers/admin/posts_helper.js\n    exists  app/views/\n    create  app/views/admin/\n    create  app/views/admin/posts/\n    create  app/views/admin/posts/index.ejs\n    create  app/views/admin/posts/new.ejs\n    create  app/views/admin/posts/edit.ejs\n    create  app/views/admin/posts/update.ejs\n\nCurrently it generates only `*.ejs` views\n\nModels\n------\n\nCheckout [JugglingDB][2] docs to see how to work with models.\n\nREPL console\n------------\n\nTo run REPL console use command\n\n    railway console\n\nor it's shortcut\n\n    railway c\n\nIt just simple node-js console with some Railway bindings, e.g. models. Just one note\nabout working with console. Node.js is asynchronous by its nature, and it's great\nbut it made console debugging much more complicated, because you should use callback\nto fetch result from database, for example. I have added one useful method to\nsimplify async debugging using railway console. It's name `c`, you can pass it\nas parameter to any function requires callback, and it will store parameters passed\nto callback to variables `_0, _1, ..., _N` where N is index in `arguments`.\n\nExample:\n\n    railway c\n    railway> User.find(53, c)\n    Callback called with 2 arguments:\n    _0 = null\n    _1 = [object Object]\n    railway> _1\n    { email: [Getter/Setter],\n      password: [Getter/Setter],\n      activationCode: [Getter/Setter],\n      activated: [Getter/Setter],\n      forcePassChange: [Getter/Setter],\n      isAdmin: [Getter/Setter],\n      id: [Getter/Setter] }\n\nLocalization\n------------\n\nTo add another language to app just create yml file in `config/locales`,\nfor example `config/locales/jp.yml`, copy contents of `config/locales/en.yml` to new\nfile and rename root node (`en` to `jp` in that case), also in `lang` section rename\n`name` to Japanese (for example).\n\nNext step - rename email files in `app/views/emails`, copy all files `*.en.html` \nand `*.en.text` to `*.jp.html` and `*.jp.text` and translate new files.\n\nNOTE: translation can contain `%` symbol(s), that means variable substitution\n\nLogger\n-----\n\n    app.set('quiet', true); // force logger to log into `log/#{app.settings.env}.log`\n    railway.logger.write(msg); // to log message\n\nConfiguring\n===========\n\nRailway has some configuration options allows to customize app behavior\n\neval cache\n----------\n\nEnable controllers caching, should be turned on in prd. In development mode\ndisabling cache allows to avoid server restarting after each model/controller change\n\n    app.disable('eval cache'); // in config/environments/development.js\n    app.enable('eval cache'); // in config/environments/production.js\n\nmodel cache\n-----------\n\nSame option for models. When disabled model files evaluated per each request.\n\n    app.disable('model cache'); // in config/environments/development.js\n\nview cache\n----------\n\nExpress.js option, enables view caching.\n\n    app.disable('view cache'); // in config/environments/development.js\n\nquiet\n-----\n\nWrite logs to `log/NODE_ENV.log`\n\n    app.set('quiet', true); // in config/environments/test.js\n\nmerge javascripts\n-----------------\n\nJoin all javascript files listed in `javascript_include_tag` into one\n\n    app.enable('merge javascripts'); // in config/environments/production.js\n\nmerge stylesheets\n-----------------\n\nJoin all stylesheet files listed in `stylesheets_include_tag` into one\n\n    app.enable('merge stylesheets'); // in config/environments/production.js\n\nMIT License\n===========\n\n    Copyright (C) 2011 by Anatoliy Chakkaev\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n\n\n  [1]: http://node-js.ru\n  [2]: https://github.com/1602/jugglingdb\n","maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.12":{"name":"railway","version":"0.2.12","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"url":"http://railwayjs.com","main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"yaml":">= 0.1.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.4","seedjs":"*","express":">= 2.2.2"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"jugglingdb":">= 0.1.3","nodeunit":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.12","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"1976c8c3205e29d0bcb4f969eaa5c8926da233d3","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.12.tgz","integrity":"sha512-aj2HnxdnyGVnkeKgNETN0U5Ai+oXs/6Mb0JoCrOe4Nzo3fICaIxK31c1gS/8s95vXnD8Z9VcQrL+/v86IZ+WOw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDG+IOjtA24dJ2n0oPSW/UMwWEw6lsdJfQ0byYqKj/dTgIgeCXq5LA1ry1h8bfmrIbnOMI7DSSJgmbaINEm13iPeqQ="}]},"readme":"About [<img src=\"https://secure.travis-ci.org/1602/express-on-railway.png\" />](http://travis-ci.org/#!/1602/express-on-railway)\n=====\n\nRailwayJS - MVC framework based on Exress. Ruby-on-Rails inspired. It allows you to build web application in minutes.  \n\nInstallation\n============\n\nOption 1: npm\n\n    $ sudo npm install railway -g\n\nOption 2: GitHub\n\n    $ git clone git://github.com/1602/express-on-railway.git\n    $ cd express-on-railway\n    $ git submodule update --init\n    $ npm link\n\nUsage\n=====\n\n    # initialize app\n    $ railway init blog && cd blog\n    $ npm install -l\n\n    # generate scaffold\n    $ railway generate crud post title content published:boolean\n\n    # run server on port 3000\n    $ railway s 3000\n\n    # visit appp\n    $ open http://localhost:3000/posts\n\n## Participation\n\nCheck status of project on trello board: https://trello.com/board/railwayjs/4f0a0d49128365065e008a1d\nFeel free to vote and comment on cards (tickets/issues), if you want to join team -- send me a message with your email.\n\nShort functionality review\n==========================\n\nCLI tool\n--------\n\n    Usage: railway command [argument(s)]\n\n    Commands:\n      h,  help                     Display usage information\n      i,  init                     Initialize railway app\n      g,  generate [smth]          Generate something awesome\n      r,  routes [filter]          Display application routes\n      c,  console                  Debug console\n      s,  server [port]            Run railway server\n      x,  install gitUrl [extName] Install railway eXtension\n\n**railway init [appname][ key(s)]**\n    keys:\n    --coffee                 # Default: no coffee by default\n    --tpl jade|ejs           # Default: ejs\n    --db redis|mongoose|riak # Default: mongoose\n\n**railway generate smth** - smth = generator name (controller, model, scaffold, ...can be extended via plugins)\n\nbuiltin generator: model\n`railway g model user email password approved:boolean` # generate User model with fields user, password: String, approved: Boolean\n`railway g post title content --coffee` # generate Post model in coffee script syntax\n\nbuiltin generator: scaffold (crud)\n`railway g scaffold todo title done:boolean --coffee` # generate scaffold for Todo model (title: String, done: Boolean)\n\nbuiltin generator: controller\n`railway g controller sessions new create destroy` # generate sessions controller with actions and views\n\n**railway server 8000** or **PORT=8000 node server** - run server on port `8000`\n\n**railway c** - run debugging console (see details below)\n\n**railway r** - print routes map (see details below)\n\n\nDirectory structure\n-------------------\n\nOn initialization rails-like directories tree generated, like that:\n\n    .\n    |-- app\n    |   |-- controllers\n    |   |   |-- admin\n    |   |   |   |-- categories_controller.js\n    |   |   |   |-- posts_controller.js\n    |   |   |   `-- tags_controller.js\n    |   |   |-- comments_controller.js\n    |   |   `-- posts_controller.js\n    |   |-- models\n    |   |   |-- category.js\n    |   |   |-- post.js\n    |   |   `-- tag.js\n    |   |-- views\n    |   |   |-- admin\n    |   |   |   `-- posts\n    |   |   |       |-- edit.ejs\n    |   |   |       |-- index.ejs\n    |   |   |       |-- new.ejs\n    |   |   |-- layouts\n    |   |   |   `-- application_layout.ejs\n    |   |   |-- partials\n    |   |   `-- posts\n    |   |       |-- index.ejs\n    |   |       `-- show.ejs\n    |   `-- helpers\n    |       |-- admin\n    |       |   |-- posts_helper.js\n    |       |   `-- tags_helper.js\n    |       `-- posts_helper.js\n    `-- config\n        |-- database.json\n        |-- routes.js\n        |-- tsl.cert\n        `-- tsl.key\n\nHTTPS Support\n-------------\n\nJust place your key and cert into config directory, railway will use it.\nDefault names for keys are `tsl.key` and `tsl.cert`, but you can store in in another place, in that case just pass filenames to createServer function:\n`server.js`\n\n    require('railway').createServer({key: '/tmp/key.pem', cert: '/tmp/cert.pem'});\n\nFew helpful commands:\n\n    # generate private key\n    openssl genrsa -out config/tsl.key\n    # generate cert\n    openssl req -new -x509 -key config/tsl.key  -out config/tsl.cert -days 1095 -batch\n\nRouting\n-------\n\nNow we do not have to tediously describe REST rotes for each resource, enough to write in `config/routes.js` code like this:\n\n    exports.routes = function (map) {\n        map.resources('posts', function (post) {\n            post.resources('comments');\n        });\n    };\n\ninstead of:\n\n    var ctl = require('./lib/posts_controller.js');\n    app.get('/posts/new.:format?', ctl.new);\n    app.get('/posts.:format?', ctl.index);\n    app.post('/posts.:format?', ctl.create);\n    app.get('/posts/:id.:format?', ctl.show);\n    app.put('/posts/:id.:format?', ctl.update);\n    app.delete('/posts/:id.:format?', ctl.destroy);\n    app.get('/posts/:id/edit.:format?', ctl.edit);\n\n    var com_ctl = require('./lib/comments_controller.js');\n    app.get('/posts/:post_id/comments/new.:format?', com_ctl.new);\n    app.get('/posts/:post_id/comments.:format?', com_ctl.index);\n    app.post('/posts/:post_id/comments.:format?', com_ctl.create);\n    app.get('/posts/:post_id/comments/:id.:format?', com_ctl.show);\n    app.put('/posts/:post_id/comments/:id.:format?', com_ctl.update);\n    app.delete('/posts/:post_id/comments/:id.:format?', com_ctl.destroy);\n    app.get('/posts/:post_id/comments/:id/edit.:format?', com_ctl.edit);\n\nand you can more finely tune the resources to specify certain actions, middleware, and other. Here example routes of [my blog][1]:\n\n    exports.routes = function (map) {\n        map.get('/', 'posts#index');\n        map.get(':id', 'posts#show');\n        map.get('sitemap.txt', 'posts#map');\n    \n        map.namespace('admin', function (admin) {\n            admin.resources('posts', {middleware: basic_auth, except: ['show']}, function (post) {\n                post.resources('comments');\n                post.get('likes', 'posts#likes')\n            });\n        });\n    };\n\nsince version 0.2.0 it is possible to use generic routes:\n\n    exports.routes = function (map) {\n        map.get(':controller/:action/:id');\n        map.all(':controller/:action');\n    };\n\nif you have `custom_controller` with `test` action inside it you can now do:\n\n    GET /custom/test\n    POST /custom/test\n    GET /custom/test/1 // also sets params.id to 1\n\nfor debugging routes described in `config/routes.js` you can use `railway routes` command:\n\n    $ railway routes\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n         admin_posts POST   /admin/posts.:format?           admin/posts#create\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n          admin_post DELETE /admin/posts/:id.:format?       admin/posts#destroy\n          admin_post PUT    /admin/posts/:id.:format?       admin/posts#update\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\nFilter by method:\n\n    $ railway routes GET\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n\nFilter by helper name:\n\n    $ railway routes _admin\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\n\nHelpers\n-------\n\nIn addition to regular rails helpers `link_to`, `form_for`, `javascript_include_tag`, `form_for`, etc. there are also helpers for routing: each route generates a helper method that can be invoked in a view:\n\n    <%- link_to(\"New post\", new_admin_post) %>\n    <%- link_to(\"New post\", edit_admin_post(post)) %>\n\ngenerates output:\n\n    <a href=\"/admin/posts/new\">New post</a>\n    <a href=\"/admin/posts/10/edit\">New post</a>\n\nControllers\n-----------\n\nThe controller is a module containing the declaration of actions such as this:\n\n    beforeFilter(loadPost, {only: ['edit', 'update', 'destroy']});\n\n    action('index', function () {\n        Post.allInstances({order: 'created_at'}, function (collection) {\n            render({ posts: collection });\n        });\n    });\n\n    action('create', function () {\n        Post.create(req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    action('new', function () {\n        render({ post: new Post });\n    });\n\n    action('edit', function () {\n        render({ post: request.post });\n    });\n\n    action('update', function () {\n        request.post.save(req.locale, req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    function loadPost () {\n        Post.find(req.params.id, function () {\n            request.post = this;\n            next();\n        });\n    }\n\n## Generators ##\n\nRailway offers several built-in generators: for a model, controller and for \ninitialization. Can be invoked as follows:\n\n    railway generate [what] [params]\n\n`what` can be `model`, `controller` or `scaffold`. Example of controller generation:\n\n    $ railway generate controller admin/posts index new edit update\n    exists  app/\n    exists  app/controllers/\n    create  app/controllers/admin/\n    create  app/controllers/admin/posts_controller.js\n    create  app/helpers/\n    create  app/helpers/admin/\n    create  app/helpers/admin/posts_helper.js\n    exists  app/views/\n    create  app/views/admin/\n    create  app/views/admin/posts/\n    create  app/views/admin/posts/index.ejs\n    create  app/views/admin/posts/new.ejs\n    create  app/views/admin/posts/edit.ejs\n    create  app/views/admin/posts/update.ejs\n\nCurrently it generates only `*.ejs` views\n\nModels\n------\n\nCheckout [JugglingDB][2] docs to see how to work with models.\n\nREPL console\n------------\n\nTo run REPL console use command\n\n    railway console\n\nor it's shortcut\n\n    railway c\n\nIt just simple node-js console with some Railway bindings, e.g. models. Just one note\nabout working with console. Node.js is asynchronous by its nature, and it's great\nbut it made console debugging much more complicated, because you should use callback\nto fetch result from database, for example. I have added one useful method to\nsimplify async debugging using railway console. It's name `c`, you can pass it\nas parameter to any function requires callback, and it will store parameters passed\nto callback to variables `_0, _1, ..., _N` where N is index in `arguments`.\n\nExample:\n\n    railway c\n    railway> User.find(53, c)\n    Callback called with 2 arguments:\n    _0 = null\n    _1 = [object Object]\n    railway> _1\n    { email: [Getter/Setter],\n      password: [Getter/Setter],\n      activationCode: [Getter/Setter],\n      activated: [Getter/Setter],\n      forcePassChange: [Getter/Setter],\n      isAdmin: [Getter/Setter],\n      id: [Getter/Setter] }\n\nLocalization\n------------\n\nTo add another language to app just create yml file in `config/locales`,\nfor example `config/locales/jp.yml`, copy contents of `config/locales/en.yml` to new\nfile and rename root node (`en` to `jp` in that case), also in `lang` section rename\n`name` to Japanese (for example).\n\nNext step - rename email files in `app/views/emails`, copy all files `*.en.html` \nand `*.en.text` to `*.jp.html` and `*.jp.text` and translate new files.\n\nNOTE: translation can contain `%` symbol(s), that means variable substitution\n\nLogger\n-----\n\n    app.set('quiet', true); // force logger to log into `log/#{app.settings.env}.log`\n    railway.logger.write(msg); // to log message\n\nConfiguring\n===========\n\nRailway has some configuration options allows to customize app behavior\n\neval cache\n----------\n\nEnable controllers caching, should be turned on in prd. In development mode\ndisabling cache allows to avoid server restarting after each model/controller change\n\n    app.disable('eval cache'); // in config/environments/development.js\n    app.enable('eval cache'); // in config/environments/production.js\n\nmodel cache\n-----------\n\nSame option for models. When disabled model files evaluated per each request.\n\n    app.disable('model cache'); // in config/environments/development.js\n\nview cache\n----------\n\nExpress.js option, enables view caching.\n\n    app.disable('view cache'); // in config/environments/development.js\n\nquiet\n-----\n\nWrite logs to `log/NODE_ENV.log`\n\n    app.set('quiet', true); // in config/environments/test.js\n\nmerge javascripts\n-----------------\n\nJoin all javascript files listed in `javascript_include_tag` into one\n\n    app.enable('merge javascripts'); // in config/environments/production.js\n\nmerge stylesheets\n-----------------\n\nJoin all stylesheet files listed in `stylesheets_include_tag` into one\n\n    app.enable('merge stylesheets'); // in config/environments/production.js\n\nMIT License\n===========\n\n    Copyright (C) 2011 by Anatoliy Chakkaev\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n\n\n  [1]: http://node-js.ru\n  [2]: https://github.com/1602/jugglingdb\n","maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.13":{"name":"railway","version":"0.2.13","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"url":"http://railwayjs.com","main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"yaml":">= 0.1.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.4","seedjs":"*","express":">= 2.2.2"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"jugglingdb":">= 0.1.3","nodeunit":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.13","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"6d11765441ccb6e3e9d1ba29432b6830f4dcc9be","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.13.tgz","integrity":"sha512-G6etbBsExTmwpd3vJ1gM/hiuMyQiyk6EgLsbiGdId2UIBPxRwNtYSBWuZrsQ6Kky2wSop67Unl84K1DvH32gZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFUENIdcxrDYO6122dW9mCCZEBdlsjoSbn+m7uCQjPr+AiAQpERqzJ29wSSFw00dG+zXrKH2CBLHqh9i0wpgEu0nJA=="}]},"readme":"About [<img src=\"https://secure.travis-ci.org/1602/express-on-railway.png\" />](http://travis-ci.org/#!/1602/express-on-railway)\n=====\n\nRailwayJS - MVC framework based on Exress. Ruby-on-Rails inspired. It allows you to build web application in minutes.  \n\nInstallation\n============\n\nOption 1: npm\n\n    $ sudo npm install railway -g\n\nOption 2: GitHub\n\n    $ git clone git://github.com/1602/express-on-railway.git\n    $ cd express-on-railway\n    $ git submodule update --init\n    $ npm link\n\nUsage\n=====\n\n    # initialize app\n    $ railway init blog && cd blog\n    $ npm install -l\n\n    # generate scaffold\n    $ railway generate crud post title content published:boolean\n\n    # run server on port 3000\n    $ railway s 3000\n\n    # visit appp\n    $ open http://localhost:3000/posts\n\n## Participation\n\nCheck status of project on trello board: https://trello.com/board/railwayjs/4f0a0d49128365065e008a1d\nFeel free to vote and comment on cards (tickets/issues), if you want to join team -- send me a message with your email.\n\nShort functionality review\n==========================\n\nCLI tool\n--------\n\n    Usage: railway command [argument(s)]\n\n    Commands:\n      h,  help                     Display usage information\n      i,  init                     Initialize railway app\n      g,  generate [smth]          Generate something awesome\n      r,  routes [filter]          Display application routes\n      c,  console                  Debug console\n      s,  server [port]            Run railway server\n      x,  install gitUrl [extName] Install railway eXtension\n\n**railway init [appname][ key(s)]**\n    keys:\n    --coffee                 # Default: no coffee by default\n    --tpl jade|ejs           # Default: ejs\n    --db redis|mongoose|riak # Default: mongoose\n\n**railway generate smth** - smth = generator name (controller, model, scaffold, ...can be extended via plugins)\n\nbuiltin generator: model\n`railway g model user email password approved:boolean` # generate User model with fields user, password: String, approved: Boolean\n`railway g post title content --coffee` # generate Post model in coffee script syntax\n\nbuiltin generator: scaffold (crud)\n`railway g scaffold todo title done:boolean --coffee` # generate scaffold for Todo model (title: String, done: Boolean)\n\nbuiltin generator: controller\n`railway g controller sessions new create destroy` # generate sessions controller with actions and views\n\n**railway server 8000** or **PORT=8000 node server** - run server on port `8000`\n\n**railway c** - run debugging console (see details below)\n\n**railway r** - print routes map (see details below)\n\n\nDirectory structure\n-------------------\n\nOn initialization rails-like directories tree generated, like that:\n\n    .\n    |-- app\n    |   |-- controllers\n    |   |   |-- admin\n    |   |   |   |-- categories_controller.js\n    |   |   |   |-- posts_controller.js\n    |   |   |   `-- tags_controller.js\n    |   |   |-- comments_controller.js\n    |   |   `-- posts_controller.js\n    |   |-- models\n    |   |   |-- category.js\n    |   |   |-- post.js\n    |   |   `-- tag.js\n    |   |-- views\n    |   |   |-- admin\n    |   |   |   `-- posts\n    |   |   |       |-- edit.ejs\n    |   |   |       |-- index.ejs\n    |   |   |       |-- new.ejs\n    |   |   |-- layouts\n    |   |   |   `-- application_layout.ejs\n    |   |   |-- partials\n    |   |   `-- posts\n    |   |       |-- index.ejs\n    |   |       `-- show.ejs\n    |   `-- helpers\n    |       |-- admin\n    |       |   |-- posts_helper.js\n    |       |   `-- tags_helper.js\n    |       `-- posts_helper.js\n    `-- config\n        |-- database.json\n        |-- routes.js\n        |-- tsl.cert\n        `-- tsl.key\n\nHTTPS Support\n-------------\n\nJust place your key and cert into config directory, railway will use it.\nDefault names for keys are `tsl.key` and `tsl.cert`, but you can store in in another place, in that case just pass filenames to createServer function:\n`server.js`\n\n    require('railway').createServer({key: '/tmp/key.pem', cert: '/tmp/cert.pem'});\n\nFew helpful commands:\n\n    # generate private key\n    openssl genrsa -out config/tsl.key\n    # generate cert\n    openssl req -new -x509 -key config/tsl.key  -out config/tsl.cert -days 1095 -batch\n\nRouting\n-------\n\nNow we do not have to tediously describe REST rotes for each resource, enough to write in `config/routes.js` code like this:\n\n    exports.routes = function (map) {\n        map.resources('posts', function (post) {\n            post.resources('comments');\n        });\n    };\n\ninstead of:\n\n    var ctl = require('./lib/posts_controller.js');\n    app.get('/posts/new.:format?', ctl.new);\n    app.get('/posts.:format?', ctl.index);\n    app.post('/posts.:format?', ctl.create);\n    app.get('/posts/:id.:format?', ctl.show);\n    app.put('/posts/:id.:format?', ctl.update);\n    app.delete('/posts/:id.:format?', ctl.destroy);\n    app.get('/posts/:id/edit.:format?', ctl.edit);\n\n    var com_ctl = require('./lib/comments_controller.js');\n    app.get('/posts/:post_id/comments/new.:format?', com_ctl.new);\n    app.get('/posts/:post_id/comments.:format?', com_ctl.index);\n    app.post('/posts/:post_id/comments.:format?', com_ctl.create);\n    app.get('/posts/:post_id/comments/:id.:format?', com_ctl.show);\n    app.put('/posts/:post_id/comments/:id.:format?', com_ctl.update);\n    app.delete('/posts/:post_id/comments/:id.:format?', com_ctl.destroy);\n    app.get('/posts/:post_id/comments/:id/edit.:format?', com_ctl.edit);\n\nand you can more finely tune the resources to specify certain actions, middleware, and other. Here example routes of [my blog][1]:\n\n    exports.routes = function (map) {\n        map.get('/', 'posts#index');\n        map.get(':id', 'posts#show');\n        map.get('sitemap.txt', 'posts#map');\n    \n        map.namespace('admin', function (admin) {\n            admin.resources('posts', {middleware: basic_auth, except: ['show']}, function (post) {\n                post.resources('comments');\n                post.get('likes', 'posts#likes')\n            });\n        });\n    };\n\nsince version 0.2.0 it is possible to use generic routes:\n\n    exports.routes = function (map) {\n        map.get(':controller/:action/:id');\n        map.all(':controller/:action');\n    };\n\nif you have `custom_controller` with `test` action inside it you can now do:\n\n    GET /custom/test\n    POST /custom/test\n    GET /custom/test/1 // also sets params.id to 1\n\nfor debugging routes described in `config/routes.js` you can use `railway routes` command:\n\n    $ railway routes\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n         admin_posts POST   /admin/posts.:format?           admin/posts#create\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n          admin_post DELETE /admin/posts/:id.:format?       admin/posts#destroy\n          admin_post PUT    /admin/posts/:id.:format?       admin/posts#update\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\nFilter by method:\n\n    $ railway routes GET\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n\nFilter by helper name:\n\n    $ railway routes _admin\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\n\nHelpers\n-------\n\nIn addition to regular rails helpers `link_to`, `form_for`, `javascript_include_tag`, `form_for`, etc. there are also helpers for routing: each route generates a helper method that can be invoked in a view:\n\n    <%- link_to(\"New post\", new_admin_post) %>\n    <%- link_to(\"New post\", edit_admin_post(post)) %>\n\ngenerates output:\n\n    <a href=\"/admin/posts/new\">New post</a>\n    <a href=\"/admin/posts/10/edit\">New post</a>\n\nControllers\n-----------\n\nThe controller is a module containing the declaration of actions such as this:\n\n    beforeFilter(loadPost, {only: ['edit', 'update', 'destroy']});\n\n    action('index', function () {\n        Post.allInstances({order: 'created_at'}, function (collection) {\n            render({ posts: collection });\n        });\n    });\n\n    action('create', function () {\n        Post.create(req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    action('new', function () {\n        render({ post: new Post });\n    });\n\n    action('edit', function () {\n        render({ post: request.post });\n    });\n\n    action('update', function () {\n        request.post.save(req.locale, req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    function loadPost () {\n        Post.find(req.params.id, function () {\n            request.post = this;\n            next();\n        });\n    }\n\n## Generators ##\n\nRailway offers several built-in generators: for a model, controller and for \ninitialization. Can be invoked as follows:\n\n    railway generate [what] [params]\n\n`what` can be `model`, `controller` or `scaffold`. Example of controller generation:\n\n    $ railway generate controller admin/posts index new edit update\n    exists  app/\n    exists  app/controllers/\n    create  app/controllers/admin/\n    create  app/controllers/admin/posts_controller.js\n    create  app/helpers/\n    create  app/helpers/admin/\n    create  app/helpers/admin/posts_helper.js\n    exists  app/views/\n    create  app/views/admin/\n    create  app/views/admin/posts/\n    create  app/views/admin/posts/index.ejs\n    create  app/views/admin/posts/new.ejs\n    create  app/views/admin/posts/edit.ejs\n    create  app/views/admin/posts/update.ejs\n\nCurrently it generates only `*.ejs` views\n\nModels\n------\n\nCheckout [JugglingDB][2] docs to see how to work with models.\n\nREPL console\n------------\n\nTo run REPL console use command\n\n    railway console\n\nor it's shortcut\n\n    railway c\n\nIt just simple node-js console with some Railway bindings, e.g. models. Just one note\nabout working with console. Node.js is asynchronous by its nature, and it's great\nbut it made console debugging much more complicated, because you should use callback\nto fetch result from database, for example. I have added one useful method to\nsimplify async debugging using railway console. It's name `c`, you can pass it\nas parameter to any function requires callback, and it will store parameters passed\nto callback to variables `_0, _1, ..., _N` where N is index in `arguments`.\n\nExample:\n\n    railway c\n    railway> User.find(53, c)\n    Callback called with 2 arguments:\n    _0 = null\n    _1 = [object Object]\n    railway> _1\n    { email: [Getter/Setter],\n      password: [Getter/Setter],\n      activationCode: [Getter/Setter],\n      activated: [Getter/Setter],\n      forcePassChange: [Getter/Setter],\n      isAdmin: [Getter/Setter],\n      id: [Getter/Setter] }\n\nLocalization\n------------\n\nTo add another language to app just create yml file in `config/locales`,\nfor example `config/locales/jp.yml`, copy contents of `config/locales/en.yml` to new\nfile and rename root node (`en` to `jp` in that case), also in `lang` section rename\n`name` to Japanese (for example).\n\nNext step - rename email files in `app/views/emails`, copy all files `*.en.html` \nand `*.en.text` to `*.jp.html` and `*.jp.text` and translate new files.\n\nNOTE: translation can contain `%` symbol(s), that means variable substitution\n\nLogger\n-----\n\n    app.set('quiet', true); // force logger to log into `log/#{app.settings.env}.log`\n    railway.logger.write(msg); // to log message\n\nConfiguring\n===========\n\nRailway has some configuration options allows to customize app behavior\n\neval cache\n----------\n\nEnable controllers caching, should be turned on in prd. In development mode\ndisabling cache allows to avoid server restarting after each model/controller change\n\n    app.disable('eval cache'); // in config/environments/development.js\n    app.enable('eval cache'); // in config/environments/production.js\n\nmodel cache\n-----------\n\nSame option for models. When disabled model files evaluated per each request.\n\n    app.disable('model cache'); // in config/environments/development.js\n\nview cache\n----------\n\nExpress.js option, enables view caching.\n\n    app.disable('view cache'); // in config/environments/development.js\n\nquiet\n-----\n\nWrite logs to `log/NODE_ENV.log`\n\n    app.set('quiet', true); // in config/environments/test.js\n\nmerge javascripts\n-----------------\n\nJoin all javascript files listed in `javascript_include_tag` into one\n\n    app.enable('merge javascripts'); // in config/environments/production.js\n\nmerge stylesheets\n-----------------\n\nJoin all stylesheet files listed in `stylesheets_include_tag` into one\n\n    app.enable('merge stylesheets'); // in config/environments/production.js\n\nMIT License\n===========\n\n    Copyright (C) 2011 by Anatoliy Chakkaev\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n\n\n  [1]: http://node-js.ru\n  [2]: https://github.com/1602/jugglingdb\n","maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.14":{"name":"railway","version":"0.2.14","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"url":"http://railwayjs.com","main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"yaml":">= 0.1.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.4","seedjs":"*","express":">= 2.2.2"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"jugglingdb":">= 0.1.3","nodeunit":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.14","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"8f0e70e7e6b0e4816b9d0f80b34a95dc7afded2f","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.14.tgz","integrity":"sha512-Pw4CX5LqLGOHlGRihNS1ruNjfnpRBG8QXc77hTIz9B9P1oYezYXeF0AKympxsg1n9w7+e7OqJDfarQGkqcM5Cg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHiyHtd6Q0UB3NnO1/jR8eHJuFq0y8X30StE4Jsbfx94AiAnHLGNlvW0DmKPFeXC2/2/3N3xzypawz12NOyjesdRxg=="}]},"readme":"About [<img src=\"https://secure.travis-ci.org/1602/express-on-railway.png\" />](http://travis-ci.org/#!/1602/express-on-railway)\n=====\n\nRailwayJS - MVC framework based on Exress. Ruby-on-Rails inspired. It allows you to build web application in minutes.  \n\nInstallation\n============\n\nOption 1: npm\n\n    $ sudo npm install railway -g\n\nOption 2: GitHub\n\n    $ git clone git://github.com/1602/express-on-railway.git\n    $ cd express-on-railway\n    $ git submodule update --init\n    $ npm link\n\nUsage\n=====\n\n    # initialize app\n    $ railway init blog && cd blog\n    $ npm install -l\n\n    # generate scaffold\n    $ railway generate crud post title content published:boolean\n\n    # run server on port 3000\n    $ railway s 3000\n\n    # visit appp\n    $ open http://localhost:3000/posts\n\n## Participation\n\nCheck status of project on trello board: https://trello.com/board/railwayjs/4f0a0d49128365065e008a1d\nFeel free to vote and comment on cards (tickets/issues), if you want to join team -- send me a message with your email.\n\nShort functionality review\n==========================\n\nCLI tool\n--------\n\n    Usage: railway command [argument(s)]\n\n    Commands:\n      h,  help                     Display usage information\n      i,  init                     Initialize railway app\n      g,  generate [smth]          Generate something awesome\n      r,  routes [filter]          Display application routes\n      c,  console                  Debug console\n      s,  server [port]            Run railway server\n      x,  install gitUrl [extName] Install railway eXtension\n\n**railway init [appname][ key(s)]**\n    keys:\n    --coffee                 # Default: no coffee by default\n    --tpl jade|ejs           # Default: ejs\n    --db redis|mongoose|riak # Default: mongoose\n\n**railway generate smth** - smth = generator name (controller, model, scaffold, ...can be extended via plugins)\n\nbuiltin generator: model\n`railway g model user email password approved:boolean` # generate User model with fields user, password: String, approved: Boolean\n`railway g post title content --coffee` # generate Post model in coffee script syntax\n\nbuiltin generator: scaffold (crud)\n`railway g scaffold todo title done:boolean --coffee` # generate scaffold for Todo model (title: String, done: Boolean)\n\nbuiltin generator: controller\n`railway g controller sessions new create destroy` # generate sessions controller with actions and views\n\n**railway server 8000** or **PORT=8000 node server** - run server on port `8000`\n\n**railway c** - run debugging console (see details below)\n\n**railway r** - print routes map (see details below)\n\n\nDirectory structure\n-------------------\n\nOn initialization rails-like directories tree generated, like that:\n\n    .\n    |-- app\n    |   |-- controllers\n    |   |   |-- admin\n    |   |   |   |-- categories_controller.js\n    |   |   |   |-- posts_controller.js\n    |   |   |   `-- tags_controller.js\n    |   |   |-- comments_controller.js\n    |   |   `-- posts_controller.js\n    |   |-- models\n    |   |   |-- category.js\n    |   |   |-- post.js\n    |   |   `-- tag.js\n    |   |-- views\n    |   |   |-- admin\n    |   |   |   `-- posts\n    |   |   |       |-- edit.ejs\n    |   |   |       |-- index.ejs\n    |   |   |       |-- new.ejs\n    |   |   |-- layouts\n    |   |   |   `-- application_layout.ejs\n    |   |   |-- partials\n    |   |   `-- posts\n    |   |       |-- index.ejs\n    |   |       `-- show.ejs\n    |   `-- helpers\n    |       |-- admin\n    |       |   |-- posts_helper.js\n    |       |   `-- tags_helper.js\n    |       `-- posts_helper.js\n    `-- config\n        |-- database.json\n        |-- routes.js\n        |-- tsl.cert\n        `-- tsl.key\n\nHTTPS Support\n-------------\n\nJust place your key and cert into config directory, railway will use it.\nDefault names for keys are `tsl.key` and `tsl.cert`, but you can store in in another place, in that case just pass filenames to createServer function:\n`server.js`\n\n    require('railway').createServer({key: '/tmp/key.pem', cert: '/tmp/cert.pem'});\n\nFew helpful commands:\n\n    # generate private key\n    openssl genrsa -out config/tsl.key\n    # generate cert\n    openssl req -new -x509 -key config/tsl.key  -out config/tsl.cert -days 1095 -batch\n\nRouting\n-------\n\nNow we do not have to tediously describe REST rotes for each resource, enough to write in `config/routes.js` code like this:\n\n    exports.routes = function (map) {\n        map.resources('posts', function (post) {\n            post.resources('comments');\n        });\n    };\n\ninstead of:\n\n    var ctl = require('./lib/posts_controller.js');\n    app.get('/posts/new.:format?', ctl.new);\n    app.get('/posts.:format?', ctl.index);\n    app.post('/posts.:format?', ctl.create);\n    app.get('/posts/:id.:format?', ctl.show);\n    app.put('/posts/:id.:format?', ctl.update);\n    app.delete('/posts/:id.:format?', ctl.destroy);\n    app.get('/posts/:id/edit.:format?', ctl.edit);\n\n    var com_ctl = require('./lib/comments_controller.js');\n    app.get('/posts/:post_id/comments/new.:format?', com_ctl.new);\n    app.get('/posts/:post_id/comments.:format?', com_ctl.index);\n    app.post('/posts/:post_id/comments.:format?', com_ctl.create);\n    app.get('/posts/:post_id/comments/:id.:format?', com_ctl.show);\n    app.put('/posts/:post_id/comments/:id.:format?', com_ctl.update);\n    app.delete('/posts/:post_id/comments/:id.:format?', com_ctl.destroy);\n    app.get('/posts/:post_id/comments/:id/edit.:format?', com_ctl.edit);\n\nand you can more finely tune the resources to specify certain actions, middleware, and other. Here example routes of [my blog][1]:\n\n    exports.routes = function (map) {\n        map.get('/', 'posts#index');\n        map.get(':id', 'posts#show');\n        map.get('sitemap.txt', 'posts#map');\n    \n        map.namespace('admin', function (admin) {\n            admin.resources('posts', {middleware: basic_auth, except: ['show']}, function (post) {\n                post.resources('comments');\n                post.get('likes', 'posts#likes')\n            });\n        });\n    };\n\nsince version 0.2.0 it is possible to use generic routes:\n\n    exports.routes = function (map) {\n        map.get(':controller/:action/:id');\n        map.all(':controller/:action');\n    };\n\nif you have `custom_controller` with `test` action inside it you can now do:\n\n    GET /custom/test\n    POST /custom/test\n    GET /custom/test/1 // also sets params.id to 1\n\nfor debugging routes described in `config/routes.js` you can use `railway routes` command:\n\n    $ railway routes\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n         admin_posts POST   /admin/posts.:format?           admin/posts#create\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n          admin_post DELETE /admin/posts/:id.:format?       admin/posts#destroy\n          admin_post PUT    /admin/posts/:id.:format?       admin/posts#update\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\nFilter by method:\n\n    $ railway routes GET\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n\nFilter by helper name:\n\n    $ railway routes _admin\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\n\nHelpers\n-------\n\nIn addition to regular rails helpers `link_to`, `form_for`, `javascript_include_tag`, `form_for`, etc. there are also helpers for routing: each route generates a helper method that can be invoked in a view:\n\n    <%- link_to(\"New post\", new_admin_post) %>\n    <%- link_to(\"New post\", edit_admin_post(post)) %>\n\ngenerates output:\n\n    <a href=\"/admin/posts/new\">New post</a>\n    <a href=\"/admin/posts/10/edit\">New post</a>\n\nControllers\n-----------\n\nThe controller is a module containing the declaration of actions such as this:\n\n    beforeFilter(loadPost, {only: ['edit', 'update', 'destroy']});\n\n    action('index', function () {\n        Post.allInstances({order: 'created_at'}, function (collection) {\n            render({ posts: collection });\n        });\n    });\n\n    action('create', function () {\n        Post.create(req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    action('new', function () {\n        render({ post: new Post });\n    });\n\n    action('edit', function () {\n        render({ post: request.post });\n    });\n\n    action('update', function () {\n        request.post.save(req.locale, req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    function loadPost () {\n        Post.find(req.params.id, function () {\n            request.post = this;\n            next();\n        });\n    }\n\n## Generators ##\n\nRailway offers several built-in generators: for a model, controller and for \ninitialization. Can be invoked as follows:\n\n    railway generate [what] [params]\n\n`what` can be `model`, `controller` or `scaffold`. Example of controller generation:\n\n    $ railway generate controller admin/posts index new edit update\n    exists  app/\n    exists  app/controllers/\n    create  app/controllers/admin/\n    create  app/controllers/admin/posts_controller.js\n    create  app/helpers/\n    create  app/helpers/admin/\n    create  app/helpers/admin/posts_helper.js\n    exists  app/views/\n    create  app/views/admin/\n    create  app/views/admin/posts/\n    create  app/views/admin/posts/index.ejs\n    create  app/views/admin/posts/new.ejs\n    create  app/views/admin/posts/edit.ejs\n    create  app/views/admin/posts/update.ejs\n\nCurrently it generates only `*.ejs` views\n\nModels\n------\n\nCheckout [JugglingDB][2] docs to see how to work with models.\n\nREPL console\n------------\n\nTo run REPL console use command\n\n    railway console\n\nor it's shortcut\n\n    railway c\n\nIt just simple node-js console with some Railway bindings, e.g. models. Just one note\nabout working with console. Node.js is asynchronous by its nature, and it's great\nbut it made console debugging much more complicated, because you should use callback\nto fetch result from database, for example. I have added one useful method to\nsimplify async debugging using railway console. It's name `c`, you can pass it\nas parameter to any function requires callback, and it will store parameters passed\nto callback to variables `_0, _1, ..., _N` where N is index in `arguments`.\n\nExample:\n\n    railway c\n    railway> User.find(53, c)\n    Callback called with 2 arguments:\n    _0 = null\n    _1 = [object Object]\n    railway> _1\n    { email: [Getter/Setter],\n      password: [Getter/Setter],\n      activationCode: [Getter/Setter],\n      activated: [Getter/Setter],\n      forcePassChange: [Getter/Setter],\n      isAdmin: [Getter/Setter],\n      id: [Getter/Setter] }\n\nLocalization\n------------\n\nTo add another language to app just create yml file in `config/locales`,\nfor example `config/locales/jp.yml`, copy contents of `config/locales/en.yml` to new\nfile and rename root node (`en` to `jp` in that case), also in `lang` section rename\n`name` to Japanese (for example).\n\nNext step - rename email files in `app/views/emails`, copy all files `*.en.html` \nand `*.en.text` to `*.jp.html` and `*.jp.text` and translate new files.\n\nNOTE: translation can contain `%` symbol(s), that means variable substitution\n\nLogger\n-----\n\n    app.set('quiet', true); // force logger to log into `log/#{app.settings.env}.log`\n    railway.logger.write(msg); // to log message\n\nConfiguring\n===========\n\nRailway has some configuration options allows to customize app behavior\n\neval cache\n----------\n\nEnable controllers caching, should be turned on in prd. In development mode\ndisabling cache allows to avoid server restarting after each model/controller change\n\n    app.disable('eval cache'); // in config/environments/development.js\n    app.enable('eval cache'); // in config/environments/production.js\n\nmodel cache\n-----------\n\nSame option for models. When disabled model files evaluated per each request.\n\n    app.disable('model cache'); // in config/environments/development.js\n\nview cache\n----------\n\nExpress.js option, enables view caching.\n\n    app.disable('view cache'); // in config/environments/development.js\n\nquiet\n-----\n\nWrite logs to `log/NODE_ENV.log`\n\n    app.set('quiet', true); // in config/environments/test.js\n\nmerge javascripts\n-----------------\n\nJoin all javascript files listed in `javascript_include_tag` into one\n\n    app.enable('merge javascripts'); // in config/environments/production.js\n\nmerge stylesheets\n-----------------\n\nJoin all stylesheet files listed in `stylesheets_include_tag` into one\n\n    app.enable('merge stylesheets'); // in config/environments/production.js\n\nMIT License\n===========\n\n    Copyright (C) 2011 by Anatoliy Chakkaev\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n\n\n  [1]: http://node-js.ru\n  [2]: https://github.com/1602/jugglingdb\n","maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.15":{"name":"railway","version":"0.2.15","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"url":"http://railwayjs.com","main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"yaml":">= 0.1.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.6","seedjs":"*","express":">= 2.2.2"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"jugglingdb":">= 0.1.3","nodeunit":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.15","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"82051ab825182a2a972d3af8f43128ade5a1d28a","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.15.tgz","integrity":"sha512-FivudFvd6Q9cxIT5OJVHfto9OEChp1E2olP3z+VvctGfBViKJoDjEKZEXAB/co4XIT8NqQLWQx0uvpvVJ4pSqg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBbHfMAc+v9N76y6Np76mrm4pb01+gR7Pe52xea9XrAzAiAQqqQNqaOIWbEs9D4sSumx+Yt+VQdpUidIRFDm7GicSg=="}]},"readme":"About [<img src=\"https://secure.travis-ci.org/1602/express-on-railway.png\" />](http://travis-ci.org/#!/1602/express-on-railway)\n=====\n\nRailwayJS - MVC framework based on Exress. Ruby-on-Rails inspired. It allows you to build web application in minutes.  \n\nInstallation\n============\n\nOption 1: npm\n\n    $ sudo npm install railway -g\n\nOption 2: GitHub\n\n    $ git clone git://github.com/1602/express-on-railway.git\n    $ cd express-on-railway\n    $ git submodule update --init\n    $ npm link\n\nUsage\n=====\n\n    # initialize app\n    $ railway init blog && cd blog\n    $ npm install -l\n\n    # generate scaffold\n    $ railway generate crud post title content published:boolean\n\n    # run server on port 3000\n    $ railway s 3000\n\n    # visit appp\n    $ open http://localhost:3000/posts\n\n## Participation\n\nCheck status of project on trello board: https://trello.com/board/railwayjs/4f0a0d49128365065e008a1d\nFeel free to vote and comment on cards (tickets/issues), if you want to join team -- send me a message with your email.\n\nShort functionality review\n==========================\n\nCLI tool\n--------\n\n    Usage: railway command [argument(s)]\n\n    Commands:\n      h,  help                     Display usage information\n      i,  init                     Initialize railway app\n      g,  generate [smth]          Generate something awesome\n      r,  routes [filter]          Display application routes\n      c,  console                  Debug console\n      s,  server [port]            Run railway server\n      x,  install gitUrl [extName] Install railway eXtension\n\n**railway init [appname][ key(s)]**\n    keys:\n    --coffee                 # Default: no coffee by default\n    --tpl jade|ejs           # Default: ejs\n    --db redis|mongoose|riak # Default: mongoose\n\n**railway generate smth** - smth = generator name (controller, model, scaffold, ...can be extended via plugins)\n\nbuiltin generator: model\n`railway g model user email password approved:boolean` # generate User model with fields user, password: String, approved: Boolean\n`railway g post title content --coffee` # generate Post model in coffee script syntax\n\nbuiltin generator: scaffold (crud)\n`railway g scaffold todo title done:boolean --coffee` # generate scaffold for Todo model (title: String, done: Boolean)\n\nbuiltin generator: controller\n`railway g controller sessions new create destroy` # generate sessions controller with actions and views\n\n**railway server 8000** or **PORT=8000 node server** - run server on port `8000`\n\n**railway c** - run debugging console (see details below)\n\n**railway r** - print routes map (see details below)\n\n\nDirectory structure\n-------------------\n\nOn initialization rails-like directories tree generated, like that:\n\n    .\n    |-- app\n    |   |-- controllers\n    |   |   |-- admin\n    |   |   |   |-- categories_controller.js\n    |   |   |   |-- posts_controller.js\n    |   |   |   `-- tags_controller.js\n    |   |   |-- comments_controller.js\n    |   |   `-- posts_controller.js\n    |   |-- models\n    |   |   |-- category.js\n    |   |   |-- post.js\n    |   |   `-- tag.js\n    |   |-- views\n    |   |   |-- admin\n    |   |   |   `-- posts\n    |   |   |       |-- edit.ejs\n    |   |   |       |-- index.ejs\n    |   |   |       |-- new.ejs\n    |   |   |-- layouts\n    |   |   |   `-- application_layout.ejs\n    |   |   |-- partials\n    |   |   `-- posts\n    |   |       |-- index.ejs\n    |   |       `-- show.ejs\n    |   `-- helpers\n    |       |-- admin\n    |       |   |-- posts_helper.js\n    |       |   `-- tags_helper.js\n    |       `-- posts_helper.js\n    `-- config\n        |-- database.json\n        |-- routes.js\n        |-- tsl.cert\n        `-- tsl.key\n\nHTTPS Support\n-------------\n\nJust place your key and cert into config directory, railway will use it.\nDefault names for keys are `tsl.key` and `tsl.cert`, but you can store in in another place, in that case just pass filenames to createServer function:\n`server.js`\n\n    require('railway').createServer({key: '/tmp/key.pem', cert: '/tmp/cert.pem'});\n\nFew helpful commands:\n\n    # generate private key\n    openssl genrsa -out config/tsl.key\n    # generate cert\n    openssl req -new -x509 -key config/tsl.key  -out config/tsl.cert -days 1095 -batch\n\nRouting\n-------\n\nNow we do not have to tediously describe REST rotes for each resource, enough to write in `config/routes.js` code like this:\n\n    exports.routes = function (map) {\n        map.resources('posts', function (post) {\n            post.resources('comments');\n        });\n    };\n\ninstead of:\n\n    var ctl = require('./lib/posts_controller.js');\n    app.get('/posts/new.:format?', ctl.new);\n    app.get('/posts.:format?', ctl.index);\n    app.post('/posts.:format?', ctl.create);\n    app.get('/posts/:id.:format?', ctl.show);\n    app.put('/posts/:id.:format?', ctl.update);\n    app.delete('/posts/:id.:format?', ctl.destroy);\n    app.get('/posts/:id/edit.:format?', ctl.edit);\n\n    var com_ctl = require('./lib/comments_controller.js');\n    app.get('/posts/:post_id/comments/new.:format?', com_ctl.new);\n    app.get('/posts/:post_id/comments.:format?', com_ctl.index);\n    app.post('/posts/:post_id/comments.:format?', com_ctl.create);\n    app.get('/posts/:post_id/comments/:id.:format?', com_ctl.show);\n    app.put('/posts/:post_id/comments/:id.:format?', com_ctl.update);\n    app.delete('/posts/:post_id/comments/:id.:format?', com_ctl.destroy);\n    app.get('/posts/:post_id/comments/:id/edit.:format?', com_ctl.edit);\n\nand you can more finely tune the resources to specify certain actions, middleware, and other. Here example routes of [my blog][1]:\n\n    exports.routes = function (map) {\n        map.get('/', 'posts#index');\n        map.get(':id', 'posts#show');\n        map.get('sitemap.txt', 'posts#map');\n    \n        map.namespace('admin', function (admin) {\n            admin.resources('posts', {middleware: basic_auth, except: ['show']}, function (post) {\n                post.resources('comments');\n                post.get('likes', 'posts#likes')\n            });\n        });\n    };\n\nsince version 0.2.0 it is possible to use generic routes:\n\n    exports.routes = function (map) {\n        map.get(':controller/:action/:id');\n        map.all(':controller/:action');\n    };\n\nif you have `custom_controller` with `test` action inside it you can now do:\n\n    GET /custom/test\n    POST /custom/test\n    GET /custom/test/1 // also sets params.id to 1\n\nfor debugging routes described in `config/routes.js` you can use `railway routes` command:\n\n    $ railway routes\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n         admin_posts POST   /admin/posts.:format?           admin/posts#create\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n          admin_post DELETE /admin/posts/:id.:format?       admin/posts#destroy\n          admin_post PUT    /admin/posts/:id.:format?       admin/posts#update\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\nFilter by method:\n\n    $ railway routes GET\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n\nFilter by helper name:\n\n    $ railway routes _admin\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\n\nHelpers\n-------\n\nIn addition to regular rails helpers `link_to`, `form_for`, `javascript_include_tag`, `form_for`, etc. there are also helpers for routing: each route generates a helper method that can be invoked in a view:\n\n    <%- link_to(\"New post\", new_admin_post) %>\n    <%- link_to(\"New post\", edit_admin_post(post)) %>\n\ngenerates output:\n\n    <a href=\"/admin/posts/new\">New post</a>\n    <a href=\"/admin/posts/10/edit\">New post</a>\n\nControllers\n-----------\n\nThe controller is a module containing the declaration of actions such as this:\n\n    beforeFilter(loadPost, {only: ['edit', 'update', 'destroy']});\n\n    action('index', function () {\n        Post.allInstances({order: 'created_at'}, function (collection) {\n            render({ posts: collection });\n        });\n    });\n\n    action('create', function () {\n        Post.create(req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    action('new', function () {\n        render({ post: new Post });\n    });\n\n    action('edit', function () {\n        render({ post: request.post });\n    });\n\n    action('update', function () {\n        request.post.save(req.locale, req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    function loadPost () {\n        Post.find(req.params.id, function () {\n            request.post = this;\n            next();\n        });\n    }\n\n## Generators ##\n\nRailway offers several built-in generators: for a model, controller and for \ninitialization. Can be invoked as follows:\n\n    railway generate [what] [params]\n\n`what` can be `model`, `controller` or `scaffold`. Example of controller generation:\n\n    $ railway generate controller admin/posts index new edit update\n    exists  app/\n    exists  app/controllers/\n    create  app/controllers/admin/\n    create  app/controllers/admin/posts_controller.js\n    create  app/helpers/\n    create  app/helpers/admin/\n    create  app/helpers/admin/posts_helper.js\n    exists  app/views/\n    create  app/views/admin/\n    create  app/views/admin/posts/\n    create  app/views/admin/posts/index.ejs\n    create  app/views/admin/posts/new.ejs\n    create  app/views/admin/posts/edit.ejs\n    create  app/views/admin/posts/update.ejs\n\nCurrently it generates only `*.ejs` views\n\nModels\n------\n\nCheckout [JugglingDB][2] docs to see how to work with models.\n\nREPL console\n------------\n\nTo run REPL console use command\n\n    railway console\n\nor it's shortcut\n\n    railway c\n\nIt just simple node-js console with some Railway bindings, e.g. models. Just one note\nabout working with console. Node.js is asynchronous by its nature, and it's great\nbut it made console debugging much more complicated, because you should use callback\nto fetch result from database, for example. I have added one useful method to\nsimplify async debugging using railway console. It's name `c`, you can pass it\nas parameter to any function requires callback, and it will store parameters passed\nto callback to variables `_0, _1, ..., _N` where N is index in `arguments`.\n\nExample:\n\n    railway c\n    railway> User.find(53, c)\n    Callback called with 2 arguments:\n    _0 = null\n    _1 = [object Object]\n    railway> _1\n    { email: [Getter/Setter],\n      password: [Getter/Setter],\n      activationCode: [Getter/Setter],\n      activated: [Getter/Setter],\n      forcePassChange: [Getter/Setter],\n      isAdmin: [Getter/Setter],\n      id: [Getter/Setter] }\n\nLocalization\n------------\n\nTo add another language to app just create yml file in `config/locales`,\nfor example `config/locales/jp.yml`, copy contents of `config/locales/en.yml` to new\nfile and rename root node (`en` to `jp` in that case), also in `lang` section rename\n`name` to Japanese (for example).\n\nNext step - rename email files in `app/views/emails`, copy all files `*.en.html` \nand `*.en.text` to `*.jp.html` and `*.jp.text` and translate new files.\n\nNOTE: translation can contain `%` symbol(s), that means variable substitution\n\nLogger\n-----\n\n    app.set('quiet', true); // force logger to log into `log/#{app.settings.env}.log`\n    railway.logger.write(msg); // to log message\n\nConfiguring\n===========\n\nRailway has some configuration options allows to customize app behavior\n\neval cache\n----------\n\nEnable controllers caching, should be turned on in prd. In development mode\ndisabling cache allows to avoid server restarting after each model/controller change\n\n    app.disable('eval cache'); // in config/environments/development.js\n    app.enable('eval cache'); // in config/environments/production.js\n\nmodel cache\n-----------\n\nSame option for models. When disabled model files evaluated per each request.\n\n    app.disable('model cache'); // in config/environments/development.js\n\nview cache\n----------\n\nExpress.js option, enables view caching.\n\n    app.disable('view cache'); // in config/environments/development.js\n\nquiet\n-----\n\nWrite logs to `log/NODE_ENV.log`\n\n    app.set('quiet', true); // in config/environments/test.js\n\nmerge javascripts\n-----------------\n\nJoin all javascript files listed in `javascript_include_tag` into one\n\n    app.enable('merge javascripts'); // in config/environments/production.js\n\nmerge stylesheets\n-----------------\n\nJoin all stylesheet files listed in `stylesheets_include_tag` into one\n\n    app.enable('merge stylesheets'); // in config/environments/production.js\n\nMIT License\n===========\n\n    Copyright (C) 2011 by Anatoliy Chakkaev\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n\n\n  [1]: http://node-js.ru\n  [2]: https://github.com/1602/jugglingdb\n","maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.16":{"name":"railway","version":"0.2.16","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"url":"http://railwayjs.com","main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"yaml":">= 0.1.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.6","seedjs":"*","express":">= 2.2.2"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"jugglingdb":">= 0.1.3","nodeunit":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.16","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"c212437edc95c5dbbc2528bf9c861059788ceae8","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.16.tgz","integrity":"sha512-EQdMSY9gd1eekWI60V18os1uMZ8ehmG9AuD7WIrFlNOVo1LOt0FKbVCEJz/w+VI2Cla4PgmxeiykZqMMggaXqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHpFjVoGgUKzGCe5OO11qCju0tA4P0q+8SaoqJpCEHkpAiA82WnpJE5C3uZETvvOQLdtlOQziM5sEGlZJnU98L/hoQ=="}]},"readme":"About [<img src=\"https://secure.travis-ci.org/1602/express-on-railway.png\" />](http://travis-ci.org/#!/1602/express-on-railway)\n=====\n\nRailwayJS - MVC framework based on Exress. Ruby-on-Rails inspired. It allows you to build web application in minutes.  \n\nInstallation\n============\n\nOption 1: npm\n\n    $ sudo npm install railway -g\n\nOption 2: GitHub\n\n    $ git clone git://github.com/1602/express-on-railway.git\n    $ cd express-on-railway\n    $ git submodule update --init\n    $ npm link\n\nUsage\n=====\n\n    # initialize app\n    $ railway init blog && cd blog\n    $ npm install -l\n\n    # generate scaffold\n    $ railway generate crud post title content published:boolean\n\n    # run server on port 3000\n    $ railway s 3000\n\n    # visit appp\n    $ open http://localhost:3000/posts\n\n## Participation\n\nCheck status of project on trello board: https://trello.com/board/railwayjs/4f0a0d49128365065e008a1d\nFeel free to vote and comment on cards (tickets/issues), if you want to join team -- send me a message with your email.\n\nShort functionality review\n==========================\n\nCLI tool\n--------\n\n    Usage: railway command [argument(s)]\n\n    Commands:\n      h,  help                     Display usage information\n      i,  init                     Initialize railway app\n      g,  generate [smth]          Generate something awesome\n      r,  routes [filter]          Display application routes\n      c,  console                  Debug console\n      s,  server [port]            Run railway server\n      x,  install gitUrl [extName] Install railway eXtension\n\n**railway init [appname][ key(s)]**\n    keys:\n    --coffee                 # Default: no coffee by default\n    --tpl jade|ejs           # Default: ejs\n    --db redis|mongoose|riak # Default: mongoose\n\n**railway generate smth** - smth = generator name (controller, model, scaffold, ...can be extended via plugins)\n\nbuiltin generator: model\n`railway g model user email password approved:boolean` # generate User model with fields user, password: String, approved: Boolean\n`railway g post title content --coffee` # generate Post model in coffee script syntax\n\nbuiltin generator: scaffold (crud)\n`railway g scaffold todo title done:boolean --coffee` # generate scaffold for Todo model (title: String, done: Boolean)\n\nbuiltin generator: controller\n`railway g controller sessions new create destroy` # generate sessions controller with actions and views\n\n**railway server 8000** or **PORT=8000 node server** - run server on port `8000`\n\n**railway c** - run debugging console (see details below)\n\n**railway r** - print routes map (see details below)\n\n\nDirectory structure\n-------------------\n\nOn initialization rails-like directories tree generated, like that:\n\n    .\n    |-- app\n    |   |-- controllers\n    |   |   |-- admin\n    |   |   |   |-- categories_controller.js\n    |   |   |   |-- posts_controller.js\n    |   |   |   `-- tags_controller.js\n    |   |   |-- comments_controller.js\n    |   |   `-- posts_controller.js\n    |   |-- models\n    |   |   |-- category.js\n    |   |   |-- post.js\n    |   |   `-- tag.js\n    |   |-- views\n    |   |   |-- admin\n    |   |   |   `-- posts\n    |   |   |       |-- edit.ejs\n    |   |   |       |-- index.ejs\n    |   |   |       |-- new.ejs\n    |   |   |-- layouts\n    |   |   |   `-- application_layout.ejs\n    |   |   |-- partials\n    |   |   `-- posts\n    |   |       |-- index.ejs\n    |   |       `-- show.ejs\n    |   `-- helpers\n    |       |-- admin\n    |       |   |-- posts_helper.js\n    |       |   `-- tags_helper.js\n    |       `-- posts_helper.js\n    `-- config\n        |-- database.json\n        |-- routes.js\n        |-- tsl.cert\n        `-- tsl.key\n\nHTTPS Support\n-------------\n\nJust place your key and cert into config directory, railway will use it.\nDefault names for keys are `tsl.key` and `tsl.cert`, but you can store in in another place, in that case just pass filenames to createServer function:\n`server.js`\n\n    require('railway').createServer({key: '/tmp/key.pem', cert: '/tmp/cert.pem'});\n\nFew helpful commands:\n\n    # generate private key\n    openssl genrsa -out config/tsl.key\n    # generate cert\n    openssl req -new -x509 -key config/tsl.key  -out config/tsl.cert -days 1095 -batch\n\nRouting\n-------\n\nNow we do not have to tediously describe REST rotes for each resource, enough to write in `config/routes.js` code like this:\n\n    exports.routes = function (map) {\n        map.resources('posts', function (post) {\n            post.resources('comments');\n        });\n    };\n\ninstead of:\n\n    var ctl = require('./lib/posts_controller.js');\n    app.get('/posts/new.:format?', ctl.new);\n    app.get('/posts.:format?', ctl.index);\n    app.post('/posts.:format?', ctl.create);\n    app.get('/posts/:id.:format?', ctl.show);\n    app.put('/posts/:id.:format?', ctl.update);\n    app.delete('/posts/:id.:format?', ctl.destroy);\n    app.get('/posts/:id/edit.:format?', ctl.edit);\n\n    var com_ctl = require('./lib/comments_controller.js');\n    app.get('/posts/:post_id/comments/new.:format?', com_ctl.new);\n    app.get('/posts/:post_id/comments.:format?', com_ctl.index);\n    app.post('/posts/:post_id/comments.:format?', com_ctl.create);\n    app.get('/posts/:post_id/comments/:id.:format?', com_ctl.show);\n    app.put('/posts/:post_id/comments/:id.:format?', com_ctl.update);\n    app.delete('/posts/:post_id/comments/:id.:format?', com_ctl.destroy);\n    app.get('/posts/:post_id/comments/:id/edit.:format?', com_ctl.edit);\n\nand you can more finely tune the resources to specify certain actions, middleware, and other. Here example routes of [my blog][1]:\n\n    exports.routes = function (map) {\n        map.get('/', 'posts#index');\n        map.get(':id', 'posts#show');\n        map.get('sitemap.txt', 'posts#map');\n    \n        map.namespace('admin', function (admin) {\n            admin.resources('posts', {middleware: basic_auth, except: ['show']}, function (post) {\n                post.resources('comments');\n                post.get('likes', 'posts#likes')\n            });\n        });\n    };\n\nsince version 0.2.0 it is possible to use generic routes:\n\n    exports.routes = function (map) {\n        map.get(':controller/:action/:id');\n        map.all(':controller/:action');\n    };\n\nif you have `custom_controller` with `test` action inside it you can now do:\n\n    GET /custom/test\n    POST /custom/test\n    GET /custom/test/1 // also sets params.id to 1\n\nfor debugging routes described in `config/routes.js` you can use `railway routes` command:\n\n    $ railway routes\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n         admin_posts POST   /admin/posts.:format?           admin/posts#create\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n          admin_post DELETE /admin/posts/:id.:format?       admin/posts#destroy\n          admin_post PUT    /admin/posts/:id.:format?       admin/posts#update\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\nFilter by method:\n\n    $ railway routes GET\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n\nFilter by helper name:\n\n    $ railway routes _admin\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\n\nHelpers\n-------\n\nIn addition to regular rails helpers `link_to`, `form_for`, `javascript_include_tag`, `form_for`, etc. there are also helpers for routing: each route generates a helper method that can be invoked in a view:\n\n    <%- link_to(\"New post\", new_admin_post) %>\n    <%- link_to(\"New post\", edit_admin_post(post)) %>\n\ngenerates output:\n\n    <a href=\"/admin/posts/new\">New post</a>\n    <a href=\"/admin/posts/10/edit\">New post</a>\n\nControllers\n-----------\n\nThe controller is a module containing the declaration of actions such as this:\n\n    beforeFilter(loadPost, {only: ['edit', 'update', 'destroy']});\n\n    action('index', function () {\n        Post.allInstances({order: 'created_at'}, function (collection) {\n            render({ posts: collection });\n        });\n    });\n\n    action('create', function () {\n        Post.create(req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    action('new', function () {\n        render({ post: new Post });\n    });\n\n    action('edit', function () {\n        render({ post: request.post });\n    });\n\n    action('update', function () {\n        request.post.save(req.locale, req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    function loadPost () {\n        Post.find(req.params.id, function () {\n            request.post = this;\n            next();\n        });\n    }\n\n## Generators ##\n\nRailway offers several built-in generators: for a model, controller and for \ninitialization. Can be invoked as follows:\n\n    railway generate [what] [params]\n\n`what` can be `model`, `controller` or `scaffold`. Example of controller generation:\n\n    $ railway generate controller admin/posts index new edit update\n    exists  app/\n    exists  app/controllers/\n    create  app/controllers/admin/\n    create  app/controllers/admin/posts_controller.js\n    create  app/helpers/\n    create  app/helpers/admin/\n    create  app/helpers/admin/posts_helper.js\n    exists  app/views/\n    create  app/views/admin/\n    create  app/views/admin/posts/\n    create  app/views/admin/posts/index.ejs\n    create  app/views/admin/posts/new.ejs\n    create  app/views/admin/posts/edit.ejs\n    create  app/views/admin/posts/update.ejs\n\nCurrently it generates only `*.ejs` views\n\nModels\n------\n\nCheckout [JugglingDB][2] docs to see how to work with models.\n\nREPL console\n------------\n\nTo run REPL console use command\n\n    railway console\n\nor it's shortcut\n\n    railway c\n\nIt just simple node-js console with some Railway bindings, e.g. models. Just one note\nabout working with console. Node.js is asynchronous by its nature, and it's great\nbut it made console debugging much more complicated, because you should use callback\nto fetch result from database, for example. I have added one useful method to\nsimplify async debugging using railway console. It's name `c`, you can pass it\nas parameter to any function requires callback, and it will store parameters passed\nto callback to variables `_0, _1, ..., _N` where N is index in `arguments`.\n\nExample:\n\n    railway c\n    railway> User.find(53, c)\n    Callback called with 2 arguments:\n    _0 = null\n    _1 = [object Object]\n    railway> _1\n    { email: [Getter/Setter],\n      password: [Getter/Setter],\n      activationCode: [Getter/Setter],\n      activated: [Getter/Setter],\n      forcePassChange: [Getter/Setter],\n      isAdmin: [Getter/Setter],\n      id: [Getter/Setter] }\n\nLocalization\n------------\n\nTo add another language to app just create yml file in `config/locales`,\nfor example `config/locales/jp.yml`, copy contents of `config/locales/en.yml` to new\nfile and rename root node (`en` to `jp` in that case), also in `lang` section rename\n`name` to Japanese (for example).\n\nNext step - rename email files in `app/views/emails`, copy all files `*.en.html` \nand `*.en.text` to `*.jp.html` and `*.jp.text` and translate new files.\n\nNOTE: translation can contain `%` symbol(s), that means variable substitution\n\nLogger\n-----\n\n    app.set('quiet', true); // force logger to log into `log/#{app.settings.env}.log`\n    railway.logger.write(msg); // to log message\n\nConfiguring\n===========\n\nRailway has some configuration options allows to customize app behavior\n\neval cache\n----------\n\nEnable controllers caching, should be turned on in prd. In development mode\ndisabling cache allows to avoid server restarting after each model/controller change\n\n    app.disable('eval cache'); // in config/environments/development.js\n    app.enable('eval cache'); // in config/environments/production.js\n\nmodel cache\n-----------\n\nSame option for models. When disabled model files evaluated per each request.\n\n    app.disable('model cache'); // in config/environments/development.js\n\nview cache\n----------\n\nExpress.js option, enables view caching.\n\n    app.disable('view cache'); // in config/environments/development.js\n\nquiet\n-----\n\nWrite logs to `log/NODE_ENV.log`\n\n    app.set('quiet', true); // in config/environments/test.js\n\nmerge javascripts\n-----------------\n\nJoin all javascript files listed in `javascript_include_tag` into one\n\n    app.enable('merge javascripts'); // in config/environments/production.js\n\nmerge stylesheets\n-----------------\n\nJoin all stylesheet files listed in `stylesheets_include_tag` into one\n\n    app.enable('merge stylesheets'); // in config/environments/production.js\n\nMIT License\n===========\n\n    Copyright (C) 2011 by Anatoliy Chakkaev\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n\n\n  [1]: http://node-js.ru\n  [2]: https://github.com/1602/jugglingdb\n","maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"0.2.17-pre":{"name":"railway","version":"0.2.17-pre","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"url":"http://railwayjs.com","main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"yaml":">= 0.1.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.6","seedjs":"*","express":"~ 2.x"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"jugglingdb":">= 0.1.3","nodeunit":"*","semicov":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.17-pre","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"f1aea1a2dc7a2737df25cbe8f951841848066fda","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.17-pre.tgz","integrity":"sha512-BLZ5IOTVBlOjwJDm+20d8wkcV6qabOE/1TnadhgO3DYj1k7aLCYgz4+Sh5u8xwyrU8Ih3OLDBjKTWfok9v2cYA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDzY3OL4XPwO3VUciZEmLCdgJihbfAnko4Q0rzVQZygzAiEAsjfzs2ezq3z87NQISG6XZ0CkG8WS17e/rYymhRuOjaE="}]},"readme":"About [<img src=\"https://secure.travis-ci.org/1602/express-on-railway.png\" />](http://travis-ci.org/#!/1602/express-on-railway)\n=====\n\nRailwayJS - MVC framework based on Exress. Ruby-on-Rails inspired. It allows you to build web application in minutes.  \n\nInstallation\n============\n\nOption 1: npm\n\n    $ sudo npm install railway -g\n\nOption 2: GitHub\n\n    $ git clone git://github.com/1602/express-on-railway.git\n    $ cd express-on-railway\n    $ git submodule update --init\n    $ npm link\n\nUsage\n=====\n\n    # initialize app\n    $ railway init blog && cd blog\n    $ npm install -l\n\n    # generate scaffold\n    $ railway generate crud post title content published:boolean\n\n    # run server on port 3000\n    $ railway s 3000\n\n    # visit appp\n    $ open http://localhost:3000/posts\n\n## Participation\n\nCheck status of project on trello board: https://trello.com/board/railwayjs/4f0a0d49128365065e008a1d\nFeel free to vote and comment on cards (tickets/issues), if you want to join team -- send me a message with your email.\n\nShort functionality review\n==========================\n\nCLI tool\n--------\n\n    Usage: railway command [argument(s)]\n\n    Commands:\n      h,  help                     Display usage information\n      i,  init                     Initialize railway app\n      g,  generate [smth]          Generate something awesome\n      r,  routes [filter]          Display application routes\n      c,  console                  Debug console\n      s,  server [port]            Run railway server\n      x,  install gitUrl [extName] Install railway eXtension\n\n**railway init [appname][ key(s)]**\n    keys:\n    --coffee                 # Default: no coffee by default\n    --tpl jade|ejs           # Default: ejs\n    --db redis|mongoose|riak # Default: mongoose\n\n**railway generate smth** - smth = generator name (controller, model, scaffold, ...can be extended via plugins)\n\nbuiltin generator: model\n`railway g model user email password approved:boolean` # generate User model with fields user, password: String, approved: Boolean\n`railway g post title content --coffee` # generate Post model in coffee script syntax\n\nbuiltin generator: scaffold (crud)\n`railway g scaffold todo title done:boolean --coffee` # generate scaffold for Todo model (title: String, done: Boolean)\n\nbuiltin generator: controller\n`railway g controller sessions new create destroy` # generate sessions controller with actions and views\n\n**railway server 8000** or **PORT=8000 node server** - run server on port `8000`\n\n**railway c** - run debugging console (see details below)\n\n**railway r** - print routes map (see details below)\n\n\nDirectory structure\n-------------------\n\nOn initialization rails-like directories tree generated, like that:\n\n    .\n    |-- app\n    |   |-- controllers\n    |   |   |-- admin\n    |   |   |   |-- categories_controller.js\n    |   |   |   |-- posts_controller.js\n    |   |   |   `-- tags_controller.js\n    |   |   |-- comments_controller.js\n    |   |   `-- posts_controller.js\n    |   |-- models\n    |   |   |-- category.js\n    |   |   |-- post.js\n    |   |   `-- tag.js\n    |   |-- views\n    |   |   |-- admin\n    |   |   |   `-- posts\n    |   |   |       |-- edit.ejs\n    |   |   |       |-- index.ejs\n    |   |   |       |-- new.ejs\n    |   |   |-- layouts\n    |   |   |   `-- application_layout.ejs\n    |   |   |-- partials\n    |   |   `-- posts\n    |   |       |-- index.ejs\n    |   |       `-- show.ejs\n    |   `-- helpers\n    |       |-- admin\n    |       |   |-- posts_helper.js\n    |       |   `-- tags_helper.js\n    |       `-- posts_helper.js\n    `-- config\n        |-- database.json\n        |-- routes.js\n        |-- tsl.cert\n        `-- tsl.key\n\nHTTPS Support\n-------------\n\nJust place your key and cert into config directory, railway will use it.\nDefault names for keys are `tsl.key` and `tsl.cert`, but you can store in in another place, in that case just pass filenames to createServer function:\n`server.js`\n\n    require('railway').createServer({key: '/tmp/key.pem', cert: '/tmp/cert.pem'});\n\nFew helpful commands:\n\n    # generate private key\n    openssl genrsa -out config/tsl.key\n    # generate cert\n    openssl req -new -x509 -key config/tsl.key  -out config/tsl.cert -days 1095 -batch\n\nRouting\n-------\n\nNow we do not have to tediously describe REST rotes for each resource, enough to write in `config/routes.js` code like this:\n\n    exports.routes = function (map) {\n        map.resources('posts', function (post) {\n            post.resources('comments');\n        });\n    };\n\ninstead of:\n\n    var ctl = require('./lib/posts_controller.js');\n    app.get('/posts/new.:format?', ctl.new);\n    app.get('/posts.:format?', ctl.index);\n    app.post('/posts.:format?', ctl.create);\n    app.get('/posts/:id.:format?', ctl.show);\n    app.put('/posts/:id.:format?', ctl.update);\n    app.delete('/posts/:id.:format?', ctl.destroy);\n    app.get('/posts/:id/edit.:format?', ctl.edit);\n\n    var com_ctl = require('./lib/comments_controller.js');\n    app.get('/posts/:post_id/comments/new.:format?', com_ctl.new);\n    app.get('/posts/:post_id/comments.:format?', com_ctl.index);\n    app.post('/posts/:post_id/comments.:format?', com_ctl.create);\n    app.get('/posts/:post_id/comments/:id.:format?', com_ctl.show);\n    app.put('/posts/:post_id/comments/:id.:format?', com_ctl.update);\n    app.delete('/posts/:post_id/comments/:id.:format?', com_ctl.destroy);\n    app.get('/posts/:post_id/comments/:id/edit.:format?', com_ctl.edit);\n\nand you can more finely tune the resources to specify certain actions, middleware, and other. Here example routes of [my blog][1]:\n\n    exports.routes = function (map) {\n        map.get('/', 'posts#index');\n        map.get(':id', 'posts#show');\n        map.get('sitemap.txt', 'posts#map');\n    \n        map.namespace('admin', function (admin) {\n            admin.resources('posts', {middleware: basic_auth, except: ['show']}, function (post) {\n                post.resources('comments');\n                post.get('likes', 'posts#likes')\n            });\n        });\n    };\n\nsince version 0.2.0 it is possible to use generic routes:\n\n    exports.routes = function (map) {\n        map.get(':controller/:action/:id');\n        map.all(':controller/:action');\n    };\n\nif you have `custom_controller` with `test` action inside it you can now do:\n\n    GET /custom/test\n    POST /custom/test\n    GET /custom/test/1 // also sets params.id to 1\n\nfor debugging routes described in `config/routes.js` you can use `railway routes` command:\n\n    $ railway routes\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n         admin_posts POST   /admin/posts.:format?           admin/posts#create\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n          admin_post DELETE /admin/posts/:id.:format?       admin/posts#destroy\n          admin_post PUT    /admin/posts/:id.:format?       admin/posts#update\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\nFilter by method:\n\n    $ railway routes GET\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n\nFilter by helper name:\n\n    $ railway routes _admin\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\n\nHelpers\n-------\n\nIn addition to regular rails helpers `link_to`, `form_for`, `javascript_include_tag`, `form_for`, etc. there are also helpers for routing: each route generates a helper method that can be invoked in a view:\n\n    <%- link_to(\"New post\", new_admin_post) %>\n    <%- link_to(\"New post\", edit_admin_post(post)) %>\n\ngenerates output:\n\n    <a href=\"/admin/posts/new\">New post</a>\n    <a href=\"/admin/posts/10/edit\">New post</a>\n\nControllers\n-----------\n\nThe controller is a module containing the declaration of actions such as this:\n\n    beforeFilter(loadPost, {only: ['edit', 'update', 'destroy']});\n\n    action('index', function () {\n        Post.allInstances({order: 'created_at'}, function (collection) {\n            render({ posts: collection });\n        });\n    });\n\n    action('create', function () {\n        Post.create(req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    action('new', function () {\n        render({ post: new Post });\n    });\n\n    action('edit', function () {\n        render({ post: request.post });\n    });\n\n    action('update', function () {\n        request.post.save(req.locale, req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    function loadPost () {\n        Post.find(req.params.id, function () {\n            request.post = this;\n            next();\n        });\n    }\n\n## Generators ##\n\nRailway offers several built-in generators: for a model, controller and for \ninitialization. Can be invoked as follows:\n\n    railway generate [what] [params]\n\n`what` can be `model`, `controller` or `scaffold`. Example of controller generation:\n\n    $ railway generate controller admin/posts index new edit update\n    exists  app/\n    exists  app/controllers/\n    create  app/controllers/admin/\n    create  app/controllers/admin/posts_controller.js\n    create  app/helpers/\n    create  app/helpers/admin/\n    create  app/helpers/admin/posts_helper.js\n    exists  app/views/\n    create  app/views/admin/\n    create  app/views/admin/posts/\n    create  app/views/admin/posts/index.ejs\n    create  app/views/admin/posts/new.ejs\n    create  app/views/admin/posts/edit.ejs\n    create  app/views/admin/posts/update.ejs\n\nCurrently it generates only `*.ejs` views\n\nModels\n------\n\nCheckout [JugglingDB][2] docs to see how to work with models.\n\nREPL console\n------------\n\nTo run REPL console use command\n\n    railway console\n\nor it's shortcut\n\n    railway c\n\nIt just simple node-js console with some Railway bindings, e.g. models. Just one note\nabout working with console. Node.js is asynchronous by its nature, and it's great\nbut it made console debugging much more complicated, because you should use callback\nto fetch result from database, for example. I have added one useful method to\nsimplify async debugging using railway console. It's name `c`, you can pass it\nas parameter to any function requires callback, and it will store parameters passed\nto callback to variables `_0, _1, ..., _N` where N is index in `arguments`.\n\nExample:\n\n    railway c\n    railway> User.find(53, c)\n    Callback called with 2 arguments:\n    _0 = null\n    _1 = [object Object]\n    railway> _1\n    { email: [Getter/Setter],\n      password: [Getter/Setter],\n      activationCode: [Getter/Setter],\n      activated: [Getter/Setter],\n      forcePassChange: [Getter/Setter],\n      isAdmin: [Getter/Setter],\n      id: [Getter/Setter] }\n\nLocalization\n------------\n\nTo add another language to app just create yml file in `config/locales`,\nfor example `config/locales/jp.yml`, copy contents of `config/locales/en.yml` to new\nfile and rename root node (`en` to `jp` in that case), also in `lang` section rename\n`name` to Japanese (for example).\n\nNext step - rename email files in `app/views/emails`, copy all files `*.en.html` \nand `*.en.text` to `*.jp.html` and `*.jp.text` and translate new files.\n\nNOTE: translation can contain `%` symbol(s), that means variable substitution\n\nLogger\n-----\n\n    app.set('quiet', true); // force logger to log into `log/#{app.settings.env}.log`\n    railway.logger.write(msg); // to log message\n\nConfiguring\n===========\n\nRailway has some configuration options allows to customize app behavior\n\neval cache\n----------\n\nEnable controllers caching, should be turned on in prd. In development mode\ndisabling cache allows to avoid server restarting after each model/controller change\n\n    app.disable('eval cache'); // in config/environments/development.js\n    app.enable('eval cache'); // in config/environments/production.js\n\nmodel cache\n-----------\n\nSame option for models. When disabled model files evaluated per each request.\n\n    app.disable('model cache'); // in config/environments/development.js\n\nview cache\n----------\n\nExpress.js option, enables view caching.\n\n    app.disable('view cache'); // in config/environments/development.js\n\nquiet\n-----\n\nWrite logs to `log/NODE_ENV.log`\n\n    app.set('quiet', true); // in config/environments/test.js\n\nmerge javascripts\n-----------------\n\nJoin all javascript files listed in `javascript_include_tag` into one\n\n    app.enable('merge javascripts'); // in config/environments/production.js\n\nmerge stylesheets\n-----------------\n\nJoin all stylesheet files listed in `stylesheets_include_tag` into one\n\n    app.enable('merge stylesheets'); // in config/environments/production.js\n\nMIT License\n===========\n\n    Copyright (C) 2011 by Anatoliy Chakkaev\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n\n\n  [1]: http://node-js.ru\n  [2]: https://github.com/1602/jugglingdb\n","maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{}},"0.2.17-pre3":{"name":"railway","version":"0.2.17-pre3","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"url":"http://railwayjs.com","main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"yaml":">= 0.1.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.6","seedjs":"*","express":"~ 2.x"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"jugglingdb":">= 0.1.3","nodeunit":"*","semicov":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.17-pre3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"0eea97cbdce78025c7b55ca00e57952c47e6fed6","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.17-pre3.tgz","integrity":"sha512-dnRK07ZmOj6AOxp7s8UoroBtqky2G3+QsN1WWiJIPP/CnqSrbeEom6KNz5nkK8IR+fKEj6NgE7W6o+zbrE+uFA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIANz9mvnSihyZuW3xdy7AWUPwEPyqN2qi6OObANm3aYbAiBPnDivHa5Yk7oHwtQfmob9NSZaeMUd0zV6d2kisx9U4g=="}]},"readme":"About [<img src=\"https://secure.travis-ci.org/1602/express-on-railway.png\" />](http://travis-ci.org/#!/1602/express-on-railway)\n=====\n\nRailwayJS - MVC framework based on Exress. Ruby-on-Rails inspired. It allows you to build web application in minutes.  \n\nInstallation\n============\n\nOption 1: npm\n\n    $ sudo npm install railway -g\n\nOption 2: GitHub\n\n    $ git clone git://github.com/1602/express-on-railway.git\n    $ cd express-on-railway\n    $ git submodule update --init\n    $ npm link\n\nUsage\n=====\n\n    # initialize app\n    $ railway init blog && cd blog\n    $ npm install -l\n\n    # generate scaffold\n    $ railway generate crud post title content published:boolean\n\n    # run server on port 3000\n    $ railway s 3000\n\n    # visit appp\n    $ open http://localhost:3000/posts\n\n## Participation\n\nCheck status of project on trello board: https://trello.com/board/railwayjs/4f0a0d49128365065e008a1d\nFeel free to vote and comment on cards (tickets/issues), if you want to join team -- send me a message with your email.\n\nShort functionality review\n==========================\n\nCLI tool\n--------\n\n    Usage: railway command [argument(s)]\n\n    Commands:\n      h,  help                     Display usage information\n      i,  init                     Initialize railway app\n      g,  generate [smth]          Generate something awesome\n      r,  routes [filter]          Display application routes\n      c,  console                  Debug console\n      s,  server [port]            Run railway server\n      x,  install gitUrl [extName] Install railway eXtension\n\n**railway init [appname][ key(s)]**\n    keys:\n    --coffee                 # Default: no coffee by default\n    --tpl jade|ejs           # Default: ejs\n    --db redis|mongoose|riak # Default: mongoose\n\n**railway generate smth** - smth = generator name (controller, model, scaffold, ...can be extended via plugins)\n\nbuiltin generator: model\n`railway g model user email password approved:boolean` # generate User model with fields user, password: String, approved: Boolean\n`railway g post title content --coffee` # generate Post model in coffee script syntax\n\nbuiltin generator: scaffold (crud)\n`railway g scaffold todo title done:boolean --coffee` # generate scaffold for Todo model (title: String, done: Boolean)\n\nbuiltin generator: controller\n`railway g controller sessions new create destroy` # generate sessions controller with actions and views\n\n**railway server 8000** or **PORT=8000 node server** - run server on port `8000`\n\n**railway c** - run debugging console (see details below)\n\n**railway r** - print routes map (see details below)\n\n\nDirectory structure\n-------------------\n\nOn initialization rails-like directories tree generated, like that:\n\n    .\n    |-- app\n    |   |-- controllers\n    |   |   |-- admin\n    |   |   |   |-- categories_controller.js\n    |   |   |   |-- posts_controller.js\n    |   |   |   `-- tags_controller.js\n    |   |   |-- comments_controller.js\n    |   |   `-- posts_controller.js\n    |   |-- models\n    |   |   |-- category.js\n    |   |   |-- post.js\n    |   |   `-- tag.js\n    |   |-- views\n    |   |   |-- admin\n    |   |   |   `-- posts\n    |   |   |       |-- edit.ejs\n    |   |   |       |-- index.ejs\n    |   |   |       |-- new.ejs\n    |   |   |-- layouts\n    |   |   |   `-- application_layout.ejs\n    |   |   |-- partials\n    |   |   `-- posts\n    |   |       |-- index.ejs\n    |   |       `-- show.ejs\n    |   `-- helpers\n    |       |-- admin\n    |       |   |-- posts_helper.js\n    |       |   `-- tags_helper.js\n    |       `-- posts_helper.js\n    `-- config\n        |-- database.json\n        |-- routes.js\n        |-- tsl.cert\n        `-- tsl.key\n\nHTTPS Support\n-------------\n\nJust place your key and cert into config directory, railway will use it.\nDefault names for keys are `tsl.key` and `tsl.cert`, but you can store in in another place, in that case just pass filenames to createServer function:\n`server.js`\n\n    require('railway').createServer({key: '/tmp/key.pem', cert: '/tmp/cert.pem'});\n\nFew helpful commands:\n\n    # generate private key\n    openssl genrsa -out config/tsl.key\n    # generate cert\n    openssl req -new -x509 -key config/tsl.key  -out config/tsl.cert -days 1095 -batch\n\nRouting\n-------\n\nNow we do not have to tediously describe REST rotes for each resource, enough to write in `config/routes.js` code like this:\n\n    exports.routes = function (map) {\n        map.resources('posts', function (post) {\n            post.resources('comments');\n        });\n    };\n\ninstead of:\n\n    var ctl = require('./lib/posts_controller.js');\n    app.get('/posts/new.:format?', ctl.new);\n    app.get('/posts.:format?', ctl.index);\n    app.post('/posts.:format?', ctl.create);\n    app.get('/posts/:id.:format?', ctl.show);\n    app.put('/posts/:id.:format?', ctl.update);\n    app.delete('/posts/:id.:format?', ctl.destroy);\n    app.get('/posts/:id/edit.:format?', ctl.edit);\n\n    var com_ctl = require('./lib/comments_controller.js');\n    app.get('/posts/:post_id/comments/new.:format?', com_ctl.new);\n    app.get('/posts/:post_id/comments.:format?', com_ctl.index);\n    app.post('/posts/:post_id/comments.:format?', com_ctl.create);\n    app.get('/posts/:post_id/comments/:id.:format?', com_ctl.show);\n    app.put('/posts/:post_id/comments/:id.:format?', com_ctl.update);\n    app.delete('/posts/:post_id/comments/:id.:format?', com_ctl.destroy);\n    app.get('/posts/:post_id/comments/:id/edit.:format?', com_ctl.edit);\n\nand you can more finely tune the resources to specify certain actions, middleware, and other. Here example routes of [my blog][1]:\n\n    exports.routes = function (map) {\n        map.get('/', 'posts#index');\n        map.get(':id', 'posts#show');\n        map.get('sitemap.txt', 'posts#map');\n    \n        map.namespace('admin', function (admin) {\n            admin.resources('posts', {middleware: basic_auth, except: ['show']}, function (post) {\n                post.resources('comments');\n                post.get('likes', 'posts#likes')\n            });\n        });\n    };\n\nsince version 0.2.0 it is possible to use generic routes:\n\n    exports.routes = function (map) {\n        map.get(':controller/:action/:id');\n        map.all(':controller/:action');\n    };\n\nif you have `custom_controller` with `test` action inside it you can now do:\n\n    GET /custom/test\n    POST /custom/test\n    GET /custom/test/1 // also sets params.id to 1\n\nfor debugging routes described in `config/routes.js` you can use `railway routes` command:\n\n    $ railway routes\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n         admin_posts POST   /admin/posts.:format?           admin/posts#create\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n          admin_post DELETE /admin/posts/:id.:format?       admin/posts#destroy\n          admin_post PUT    /admin/posts/:id.:format?       admin/posts#update\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\nFilter by method:\n\n    $ railway routes GET\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n\nFilter by helper name:\n\n    $ railway routes _admin\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\n\nHelpers\n-------\n\nIn addition to regular rails helpers `link_to`, `form_for`, `javascript_include_tag`, `form_for`, etc. there are also helpers for routing: each route generates a helper method that can be invoked in a view:\n\n    <%- link_to(\"New post\", new_admin_post) %>\n    <%- link_to(\"New post\", edit_admin_post(post)) %>\n\ngenerates output:\n\n    <a href=\"/admin/posts/new\">New post</a>\n    <a href=\"/admin/posts/10/edit\">New post</a>\n\nControllers\n-----------\n\nThe controller is a module containing the declaration of actions such as this:\n\n    beforeFilter(loadPost, {only: ['edit', 'update', 'destroy']});\n\n    action('index', function () {\n        Post.allInstances({order: 'created_at'}, function (collection) {\n            render({ posts: collection });\n        });\n    });\n\n    action('create', function () {\n        Post.create(req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    action('new', function () {\n        render({ post: new Post });\n    });\n\n    action('edit', function () {\n        render({ post: request.post });\n    });\n\n    action('update', function () {\n        request.post.save(req.locale, req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    function loadPost () {\n        Post.find(req.params.id, function () {\n            request.post = this;\n            next();\n        });\n    }\n\n## Generators ##\n\nRailway offers several built-in generators: for a model, controller and for \ninitialization. Can be invoked as follows:\n\n    railway generate [what] [params]\n\n`what` can be `model`, `controller` or `scaffold`. Example of controller generation:\n\n    $ railway generate controller admin/posts index new edit update\n    exists  app/\n    exists  app/controllers/\n    create  app/controllers/admin/\n    create  app/controllers/admin/posts_controller.js\n    create  app/helpers/\n    create  app/helpers/admin/\n    create  app/helpers/admin/posts_helper.js\n    exists  app/views/\n    create  app/views/admin/\n    create  app/views/admin/posts/\n    create  app/views/admin/posts/index.ejs\n    create  app/views/admin/posts/new.ejs\n    create  app/views/admin/posts/edit.ejs\n    create  app/views/admin/posts/update.ejs\n\nCurrently it generates only `*.ejs` views\n\nModels\n------\n\nCheckout [JugglingDB][2] docs to see how to work with models.\n\nREPL console\n------------\n\nTo run REPL console use command\n\n    railway console\n\nor it's shortcut\n\n    railway c\n\nIt just simple node-js console with some Railway bindings, e.g. models. Just one note\nabout working with console. Node.js is asynchronous by its nature, and it's great\nbut it made console debugging much more complicated, because you should use callback\nto fetch result from database, for example. I have added one useful method to\nsimplify async debugging using railway console. It's name `c`, you can pass it\nas parameter to any function requires callback, and it will store parameters passed\nto callback to variables `_0, _1, ..., _N` where N is index in `arguments`.\n\nExample:\n\n    railway c\n    railway> User.find(53, c)\n    Callback called with 2 arguments:\n    _0 = null\n    _1 = [object Object]\n    railway> _1\n    { email: [Getter/Setter],\n      password: [Getter/Setter],\n      activationCode: [Getter/Setter],\n      activated: [Getter/Setter],\n      forcePassChange: [Getter/Setter],\n      isAdmin: [Getter/Setter],\n      id: [Getter/Setter] }\n\nLocalization\n------------\n\nTo add another language to app just create yml file in `config/locales`,\nfor example `config/locales/jp.yml`, copy contents of `config/locales/en.yml` to new\nfile and rename root node (`en` to `jp` in that case), also in `lang` section rename\n`name` to Japanese (for example).\n\nNext step - rename email files in `app/views/emails`, copy all files `*.en.html` \nand `*.en.text` to `*.jp.html` and `*.jp.text` and translate new files.\n\nNOTE: translation can contain `%` symbol(s), that means variable substitution\n\nLogger\n-----\n\n    app.set('quiet', true); // force logger to log into `log/#{app.settings.env}.log`\n    railway.logger.write(msg); // to log message\n\nConfiguring\n===========\n\nRailway has some configuration options allows to customize app behavior\n\neval cache\n----------\n\nEnable controllers caching, should be turned on in prd. In development mode\ndisabling cache allows to avoid server restarting after each model/controller change\n\n    app.disable('eval cache'); // in config/environments/development.js\n    app.enable('eval cache'); // in config/environments/production.js\n\nmodel cache\n-----------\n\nSame option for models. When disabled model files evaluated per each request.\n\n    app.disable('model cache'); // in config/environments/development.js\n\nview cache\n----------\n\nExpress.js option, enables view caching.\n\n    app.disable('view cache'); // in config/environments/development.js\n\nquiet\n-----\n\nWrite logs to `log/NODE_ENV.log`\n\n    app.set('quiet', true); // in config/environments/test.js\n\nmerge javascripts\n-----------------\n\nJoin all javascript files listed in `javascript_include_tag` into one\n\n    app.enable('merge javascripts'); // in config/environments/production.js\n\nmerge stylesheets\n-----------------\n\nJoin all stylesheet files listed in `stylesheets_include_tag` into one\n\n    app.enable('merge stylesheets'); // in config/environments/production.js\n\nMIT License\n===========\n\n    Copyright (C) 2011 by Anatoliy Chakkaev\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n\n\n  [1]: http://node-js.ru\n  [2]: https://github.com/1602/jugglingdb\n","maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{}},"0.2.17-pre4":{"name":"railway","version":"0.2.17-pre4","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"url":"http://railwayjs.com","main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"yaml-js":">= 0.0.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.6","seedjs":"*","express":"~ 2.x"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"jugglingdb":">= 0.1.3","nodeunit":"*","semicov":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"rpm1602@gmail.com"},"_id":"railway@0.2.17-pre4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"45964722ed34ee272e863885b5bfedbd92908869","tarball":"https://registry.npmjs.org/railway/-/railway-0.2.17-pre4.tgz","integrity":"sha512-Qqcb1iGUqdYZWgwJ+4A7QvToB+SHF7Phjjm1Pr/JfYaGc9+qE0s1AiTo1Xu6i2VhkzP9XaP1hRsqxXzrG1ODdA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAr2fRUweN/UqM/MgFvus1YB6zPeUZg7UbVaKVH4x0bwAiBKM8lrU3txDxa6J4c0QnzBE78+CaST8etGJuIRhKV5lw=="}]},"readme":"About [<img src=\"https://secure.travis-ci.org/1602/express-on-railway.png\" />](http://travis-ci.org/#!/1602/express-on-railway)\n=====\n\nRailwayJS - MVC framework based on Exress. Ruby-on-Rails inspired. It allows you to build web application in minutes.  \n\nInstallation\n============\n\nOption 1: npm\n\n    $ sudo npm install railway -g\n\nOption 2: GitHub\n\n    $ git clone git://github.com/1602/express-on-railway.git\n    $ cd express-on-railway\n    $ git submodule update --init\n    $ npm link\n\nUsage\n=====\n\n    # initialize app\n    $ railway init blog && cd blog\n    $ npm install -l\n\n    # generate scaffold\n    $ railway generate crud post title content published:boolean\n\n    # run server on port 3000\n    $ railway s 3000\n\n    # visit appp\n    $ open http://localhost:3000/posts\n\n## Participation\n\nCheck status of project on trello board: https://trello.com/board/railwayjs/4f0a0d49128365065e008a1d\nFeel free to vote and comment on cards (tickets/issues), if you want to join team -- send me a message with your email.\n\nShort functionality review\n==========================\n\nCLI tool\n--------\n\n    Usage: railway command [argument(s)]\n\n    Commands:\n      h,  help                     Display usage information\n      i,  init                     Initialize railway app\n      g,  generate [smth]          Generate something awesome\n      r,  routes [filter]          Display application routes\n      c,  console                  Debug console\n      s,  server [port]            Run railway server\n      x,  install gitUrl [extName] Install railway eXtension\n\n**railway init [appname][ key(s)]**\n    keys:\n    --coffee                 # Default: no coffee by default\n    --tpl jade|ejs           # Default: ejs\n    --db redis|mongoose|riak # Default: mongoose\n\n**railway generate smth** - smth = generator name (controller, model, scaffold, ...can be extended via plugins)\n\nbuiltin generator: model\n`railway g model user email password approved:boolean` # generate User model with fields user, password: String, approved: Boolean\n`railway g post title content --coffee` # generate Post model in coffee script syntax\n\nbuiltin generator: scaffold (crud)\n`railway g scaffold todo title done:boolean --coffee` # generate scaffold for Todo model (title: String, done: Boolean)\n\nbuiltin generator: controller\n`railway g controller sessions new create destroy` # generate sessions controller with actions and views\n\n**railway server 8000** or **PORT=8000 node server** - run server on port `8000`\n\n**railway c** - run debugging console (see details below)\n\n**railway r** - print routes map (see details below)\n\n\nDirectory structure\n-------------------\n\nOn initialization rails-like directories tree generated, like that:\n\n    .\n    |-- app\n    |   |-- controllers\n    |   |   |-- admin\n    |   |   |   |-- categories_controller.js\n    |   |   |   |-- posts_controller.js\n    |   |   |   `-- tags_controller.js\n    |   |   |-- comments_controller.js\n    |   |   `-- posts_controller.js\n    |   |-- models\n    |   |   |-- category.js\n    |   |   |-- post.js\n    |   |   `-- tag.js\n    |   |-- views\n    |   |   |-- admin\n    |   |   |   `-- posts\n    |   |   |       |-- edit.ejs\n    |   |   |       |-- index.ejs\n    |   |   |       |-- new.ejs\n    |   |   |-- layouts\n    |   |   |   `-- application_layout.ejs\n    |   |   |-- partials\n    |   |   `-- posts\n    |   |       |-- index.ejs\n    |   |       `-- show.ejs\n    |   `-- helpers\n    |       |-- admin\n    |       |   |-- posts_helper.js\n    |       |   `-- tags_helper.js\n    |       `-- posts_helper.js\n    `-- config\n        |-- database.json\n        |-- routes.js\n        |-- tsl.cert\n        `-- tsl.key\n\nHTTPS Support\n-------------\n\nJust place your key and cert into config directory, railway will use it.\nDefault names for keys are `tsl.key` and `tsl.cert`, but you can store in in another place, in that case just pass filenames to createServer function:\n`server.js`\n\n    require('railway').createServer({key: '/tmp/key.pem', cert: '/tmp/cert.pem'});\n\nFew helpful commands:\n\n    # generate private key\n    openssl genrsa -out config/tsl.key\n    # generate cert\n    openssl req -new -x509 -key config/tsl.key  -out config/tsl.cert -days 1095 -batch\n\nRouting\n-------\n\nNow we do not have to tediously describe REST rotes for each resource, enough to write in `config/routes.js` code like this:\n\n    exports.routes = function (map) {\n        map.resources('posts', function (post) {\n            post.resources('comments');\n        });\n    };\n\ninstead of:\n\n    var ctl = require('./lib/posts_controller.js');\n    app.get('/posts/new.:format?', ctl.new);\n    app.get('/posts.:format?', ctl.index);\n    app.post('/posts.:format?', ctl.create);\n    app.get('/posts/:id.:format?', ctl.show);\n    app.put('/posts/:id.:format?', ctl.update);\n    app.delete('/posts/:id.:format?', ctl.destroy);\n    app.get('/posts/:id/edit.:format?', ctl.edit);\n\n    var com_ctl = require('./lib/comments_controller.js');\n    app.get('/posts/:post_id/comments/new.:format?', com_ctl.new);\n    app.get('/posts/:post_id/comments.:format?', com_ctl.index);\n    app.post('/posts/:post_id/comments.:format?', com_ctl.create);\n    app.get('/posts/:post_id/comments/:id.:format?', com_ctl.show);\n    app.put('/posts/:post_id/comments/:id.:format?', com_ctl.update);\n    app.delete('/posts/:post_id/comments/:id.:format?', com_ctl.destroy);\n    app.get('/posts/:post_id/comments/:id/edit.:format?', com_ctl.edit);\n\nand you can more finely tune the resources to specify certain actions, middleware, and other. Here example routes of [my blog][1]:\n\n    exports.routes = function (map) {\n        map.get('/', 'posts#index');\n        map.get(':id', 'posts#show');\n        map.get('sitemap.txt', 'posts#map');\n    \n        map.namespace('admin', function (admin) {\n            admin.resources('posts', {middleware: basic_auth, except: ['show']}, function (post) {\n                post.resources('comments');\n                post.get('likes', 'posts#likes')\n            });\n        });\n    };\n\nsince version 0.2.0 it is possible to use generic routes:\n\n    exports.routes = function (map) {\n        map.get(':controller/:action/:id');\n        map.all(':controller/:action');\n    };\n\nif you have `custom_controller` with `test` action inside it you can now do:\n\n    GET /custom/test\n    POST /custom/test\n    GET /custom/test/1 // also sets params.id to 1\n\nfor debugging routes described in `config/routes.js` you can use `railway routes` command:\n\n    $ railway routes\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n         admin_posts POST   /admin/posts.:format?           admin/posts#create\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n          admin_post DELETE /admin/posts/:id.:format?       admin/posts#destroy\n          admin_post PUT    /admin/posts/:id.:format?       admin/posts#update\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\nFilter by method:\n\n    $ railway routes GET\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n\nFilter by helper name:\n\n    $ railway routes _admin\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\n\nHelpers\n-------\n\nIn addition to regular rails helpers `link_to`, `form_for`, `javascript_include_tag`, `form_for`, etc. there are also helpers for routing: each route generates a helper method that can be invoked in a view:\n\n    <%- link_to(\"New post\", new_admin_post) %>\n    <%- link_to(\"New post\", edit_admin_post(post)) %>\n\ngenerates output:\n\n    <a href=\"/admin/posts/new\">New post</a>\n    <a href=\"/admin/posts/10/edit\">New post</a>\n\nControllers\n-----------\n\nThe controller is a module containing the declaration of actions such as this:\n\n    beforeFilter(loadPost, {only: ['edit', 'update', 'destroy']});\n\n    action('index', function () {\n        Post.allInstances({order: 'created_at'}, function (collection) {\n            render({ posts: collection });\n        });\n    });\n\n    action('create', function () {\n        Post.create(req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    action('new', function () {\n        render({ post: new Post });\n    });\n\n    action('edit', function () {\n        render({ post: request.post });\n    });\n\n    action('update', function () {\n        request.post.save(req.locale, req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    function loadPost () {\n        Post.find(req.params.id, function () {\n            request.post = this;\n            next();\n        });\n    }\n\n## Generators ##\n\nRailway offers several built-in generators: for a model, controller and for \ninitialization. Can be invoked as follows:\n\n    railway generate [what] [params]\n\n`what` can be `model`, `controller` or `scaffold`. Example of controller generation:\n\n    $ railway generate controller admin/posts index new edit update\n    exists  app/\n    exists  app/controllers/\n    create  app/controllers/admin/\n    create  app/controllers/admin/posts_controller.js\n    create  app/helpers/\n    create  app/helpers/admin/\n    create  app/helpers/admin/posts_helper.js\n    exists  app/views/\n    create  app/views/admin/\n    create  app/views/admin/posts/\n    create  app/views/admin/posts/index.ejs\n    create  app/views/admin/posts/new.ejs\n    create  app/views/admin/posts/edit.ejs\n    create  app/views/admin/posts/update.ejs\n\nCurrently it generates only `*.ejs` views\n\nModels\n------\n\nCheckout [JugglingDB][2] docs to see how to work with models.\n\nREPL console\n------------\n\nTo run REPL console use command\n\n    railway console\n\nor it's shortcut\n\n    railway c\n\nIt just simple node-js console with some Railway bindings, e.g. models. Just one note\nabout working with console. Node.js is asynchronous by its nature, and it's great\nbut it made console debugging much more complicated, because you should use callback\nto fetch result from database, for example. I have added one useful method to\nsimplify async debugging using railway console. It's name `c`, you can pass it\nas parameter to any function requires callback, and it will store parameters passed\nto callback to variables `_0, _1, ..., _N` where N is index in `arguments`.\n\nExample:\n\n    railway c\n    railway> User.find(53, c)\n    Callback called with 2 arguments:\n    _0 = null\n    _1 = [object Object]\n    railway> _1\n    { email: [Getter/Setter],\n      password: [Getter/Setter],\n      activationCode: [Getter/Setter],\n      activated: [Getter/Setter],\n      forcePassChange: [Getter/Setter],\n      isAdmin: [Getter/Setter],\n      id: [Getter/Setter] }\n\nLocalization\n------------\n\nTo add another language to app just create yml file in `config/locales`,\nfor example `config/locales/jp.yml`, copy contents of `config/locales/en.yml` to new\nfile and rename root node (`en` to `jp` in that case), also in `lang` section rename\n`name` to Japanese (for example).\n\nNext step - rename email files in `app/views/emails`, copy all files `*.en.html` \nand `*.en.text` to `*.jp.html` and `*.jp.text` and translate new files.\n\nNOTE: translation can contain `%` symbol(s), that means variable substitution\n\nLogger\n-----\n\n    app.set('quiet', true); // force logger to log into `log/#{app.settings.env}.log`\n    railway.logger.write(msg); // to log message\n\nConfiguring\n===========\n\nRailway has some configuration options allows to customize app behavior\n\neval cache\n----------\n\nEnable controllers caching, should be turned on in prd. In development mode\ndisabling cache allows to avoid server restarting after each model/controller change\n\n    app.disable('eval cache'); // in config/environments/development.js\n    app.enable('eval cache'); // in config/environments/production.js\n\nmodel cache\n-----------\n\nSame option for models. When disabled model files evaluated per each request.\n\n    app.disable('model cache'); // in config/environments/development.js\n\nview cache\n----------\n\nExpress.js option, enables view caching.\n\n    app.disable('view cache'); // in config/environments/development.js\n\nquiet\n-----\n\nWrite logs to `log/NODE_ENV.log`\n\n    app.set('quiet', true); // in config/environments/test.js\n\nmerge javascripts\n-----------------\n\nJoin all javascript files listed in `javascript_include_tag` into one\n\n    app.enable('merge javascripts'); // in config/environments/production.js\n\nmerge stylesheets\n-----------------\n\nJoin all stylesheet files listed in `stylesheets_include_tag` into one\n\n    app.enable('merge stylesheets'); // in config/environments/production.js\n\nMIT License\n===========\n\n    Copyright (C) 2011 by Anatoliy Chakkaev\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n\n\n  [1]: http://node-js.ru\n  [2]: https://github.com/1602/jugglingdb\n","maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{}},"1.0.0":{"name":"railway","version":"1.0.0","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"url":"http://railwayjs.com","main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"yaml-js":">= 0.0.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.6","seedjs":"*","express":"~ 2.x"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"jugglingdb":">= 0.1.3","nodeunit":"*","semicov":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"mail@anatoliy.in"},"_id":"railway@1.0.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"419db7ed005ea58bc105948099acb99441d6b0b6","tarball":"https://registry.npmjs.org/railway/-/railway-1.0.0.tgz","integrity":"sha512-kk43/yeFsu5eeEXkJxXq+21fOQDxgO7R838g1D6WrLM07jLodf4p40pBg+Vy28BnLvrPWJIdwOPFaKHV5yvJVQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID6u/VTlMtpMWt1TM7VoZT7kFUTScp5p9JmoQJgLtDkLAiEAlAleqjwc1EMzkF6NRqO1jzItHj7uGOai82UbUQddAXM="}]},"readme":"About [<img src=\"https://secure.travis-ci.org/1602/express-on-railway.png\" />](http://travis-ci.org/#!/1602/express-on-railway)\n=====\n\nRailwayJS - MVC framework based on Exress. Ruby-on-Rails inspired. It allows you to build web application in minutes.  \n\nInstallation\n============\n\nOption 1: npm\n\n    $ sudo npm install railway -g\n\nOption 2: GitHub\n\n    $ git clone git://github.com/1602/express-on-railway.git\n    $ cd express-on-railway\n    $ git submodule update --init\n    $ npm link\n\nUsage\n=====\n\n    # initialize app\n    $ railway init blog && cd blog\n    $ npm install -l\n\n    # generate scaffold\n    $ railway generate crud post title content published:boolean\n\n    # run server on port 3000\n    $ railway s 3000\n\n    # visit appp\n    $ open http://localhost:3000/posts\n\n## Participation\n\nCheck status of project on trello board: https://trello.com/board/railwayjs/4f0a0d49128365065e008a1d\nFeel free to vote and comment on cards (tickets/issues), if you want to join team -- send me a message with your email.\n\nShort functionality review\n==========================\n\nCLI tool\n--------\n\n    Usage: railway command [argument(s)]\n\n    Commands:\n      h,  help                     Display usage information\n      i,  init                     Initialize railway app\n      g,  generate [smth]          Generate something awesome\n      r,  routes [filter]          Display application routes\n      c,  console                  Debug console\n      s,  server [port]            Run railway server\n      x,  install gitUrl [extName] Install railway eXtension\n\n**railway init [appname][ key(s)]**\n    keys:\n    --coffee                 # Default: no coffee by default\n    --tpl jade|ejs           # Default: ejs\n    --db redis|mongoose|riak # Default: mongoose\n\n**railway generate smth** - smth = generator name (controller, model, scaffold, ...can be extended via plugins)\n\nbuiltin generator: model\n`railway g model user email password approved:boolean` # generate User model with fields user, password: String, approved: Boolean\n`railway g post title content --coffee` # generate Post model in coffee script syntax\n\nbuiltin generator: scaffold (crud)\n`railway g scaffold todo title done:boolean --coffee` # generate scaffold for Todo model (title: String, done: Boolean)\n\nbuiltin generator: controller\n`railway g controller sessions new create destroy` # generate sessions controller with actions and views\n\n**railway server 8000** or **PORT=8000 node server** - run server on port `8000`\n\n**railway c** - run debugging console (see details below)\n\n**railway r** - print routes map (see details below)\n\n\nDirectory structure\n-------------------\n\nOn initialization rails-like directories tree generated, like that:\n\n    .\n    |-- app\n    |   |-- controllers\n    |   |   |-- admin\n    |   |   |   |-- categories_controller.js\n    |   |   |   |-- posts_controller.js\n    |   |   |   `-- tags_controller.js\n    |   |   |-- comments_controller.js\n    |   |   `-- posts_controller.js\n    |   |-- models\n    |   |   |-- category.js\n    |   |   |-- post.js\n    |   |   `-- tag.js\n    |   |-- views\n    |   |   |-- admin\n    |   |   |   `-- posts\n    |   |   |       |-- edit.ejs\n    |   |   |       |-- index.ejs\n    |   |   |       |-- new.ejs\n    |   |   |-- layouts\n    |   |   |   `-- application_layout.ejs\n    |   |   |-- partials\n    |   |   `-- posts\n    |   |       |-- index.ejs\n    |   |       `-- show.ejs\n    |   `-- helpers\n    |       |-- admin\n    |       |   |-- posts_helper.js\n    |       |   `-- tags_helper.js\n    |       `-- posts_helper.js\n    `-- config\n        |-- database.json\n        |-- routes.js\n        |-- tsl.cert\n        `-- tsl.key\n\nHTTPS Support\n-------------\n\nJust place your key and cert into config directory, railway will use it.\nDefault names for keys are `tsl.key` and `tsl.cert`, but you can store in in another place, in that case just pass filenames to createServer function:\n`server.js`\n\n    require('railway').createServer({key: '/tmp/key.pem', cert: '/tmp/cert.pem'});\n\nFew helpful commands:\n\n    # generate private key\n    openssl genrsa -out config/tsl.key\n    # generate cert\n    openssl req -new -x509 -key config/tsl.key  -out config/tsl.cert -days 1095 -batch\n\nRouting\n-------\n\nNow we do not have to tediously describe REST rotes for each resource, enough to write in `config/routes.js` code like this:\n\n    exports.routes = function (map) {\n        map.resources('posts', function (post) {\n            post.resources('comments');\n        });\n    };\n\ninstead of:\n\n    var ctl = require('./lib/posts_controller.js');\n    app.get('/posts/new.:format?', ctl.new);\n    app.get('/posts.:format?', ctl.index);\n    app.post('/posts.:format?', ctl.create);\n    app.get('/posts/:id.:format?', ctl.show);\n    app.put('/posts/:id.:format?', ctl.update);\n    app.delete('/posts/:id.:format?', ctl.destroy);\n    app.get('/posts/:id/edit.:format?', ctl.edit);\n\n    var com_ctl = require('./lib/comments_controller.js');\n    app.get('/posts/:post_id/comments/new.:format?', com_ctl.new);\n    app.get('/posts/:post_id/comments.:format?', com_ctl.index);\n    app.post('/posts/:post_id/comments.:format?', com_ctl.create);\n    app.get('/posts/:post_id/comments/:id.:format?', com_ctl.show);\n    app.put('/posts/:post_id/comments/:id.:format?', com_ctl.update);\n    app.delete('/posts/:post_id/comments/:id.:format?', com_ctl.destroy);\n    app.get('/posts/:post_id/comments/:id/edit.:format?', com_ctl.edit);\n\nand you can more finely tune the resources to specify certain actions, middleware, and other. Here example routes of [my blog][1]:\n\n    exports.routes = function (map) {\n        map.get('/', 'posts#index');\n        map.get(':id', 'posts#show');\n        map.get('sitemap.txt', 'posts#map');\n    \n        map.namespace('admin', function (admin) {\n            admin.resources('posts', {middleware: basic_auth, except: ['show']}, function (post) {\n                post.resources('comments');\n                post.get('likes', 'posts#likes')\n            });\n        });\n    };\n\nsince version 0.2.0 it is possible to use generic routes:\n\n    exports.routes = function (map) {\n        map.get(':controller/:action/:id');\n        map.all(':controller/:action');\n    };\n\nif you have `custom_controller` with `test` action inside it you can now do:\n\n    GET /custom/test\n    POST /custom/test\n    GET /custom/test/1 // also sets params.id to 1\n\nfor debugging routes described in `config/routes.js` you can use `railway routes` command:\n\n    $ railway routes\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n         admin_posts POST   /admin/posts.:format?           admin/posts#create\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n          admin_post DELETE /admin/posts/:id.:format?       admin/posts#destroy\n          admin_post PUT    /admin/posts/:id.:format?       admin/posts#update\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\nFilter by method:\n\n    $ railway routes GET\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n\nFilter by helper name:\n\n    $ railway routes _admin\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\n\nHelpers\n-------\n\nIn addition to regular rails helpers `link_to`, `form_for`, `javascript_include_tag`, `form_for`, etc. there are also helpers for routing: each route generates a helper method that can be invoked in a view:\n\n    <%- link_to(\"New post\", new_admin_post) %>\n    <%- link_to(\"New post\", edit_admin_post(post)) %>\n\ngenerates output:\n\n    <a href=\"/admin/posts/new\">New post</a>\n    <a href=\"/admin/posts/10/edit\">New post</a>\n\nControllers\n-----------\n\nThe controller is a module containing the declaration of actions such as this:\n\n    beforeFilter(loadPost, {only: ['edit', 'update', 'destroy']});\n\n    action('index', function () {\n        Post.allInstances({order: 'created_at'}, function (collection) {\n            render({ posts: collection });\n        });\n    });\n\n    action('create', function () {\n        Post.create(req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    action('new', function () {\n        render({ post: new Post });\n    });\n\n    action('edit', function () {\n        render({ post: request.post });\n    });\n\n    action('update', function () {\n        request.post.save(req.locale, req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    function loadPost () {\n        Post.find(req.params.id, function () {\n            request.post = this;\n            next();\n        });\n    }\n\n## Generators ##\n\nRailway offers several built-in generators: for a model, controller and for \ninitialization. Can be invoked as follows:\n\n    railway generate [what] [params]\n\n`what` can be `model`, `controller` or `scaffold`. Example of controller generation:\n\n    $ railway generate controller admin/posts index new edit update\n    exists  app/\n    exists  app/controllers/\n    create  app/controllers/admin/\n    create  app/controllers/admin/posts_controller.js\n    create  app/helpers/\n    create  app/helpers/admin/\n    create  app/helpers/admin/posts_helper.js\n    exists  app/views/\n    create  app/views/admin/\n    create  app/views/admin/posts/\n    create  app/views/admin/posts/index.ejs\n    create  app/views/admin/posts/new.ejs\n    create  app/views/admin/posts/edit.ejs\n    create  app/views/admin/posts/update.ejs\n\nCurrently it generates only `*.ejs` views\n\nModels\n------\n\nCheckout [JugglingDB][2] docs to see how to work with models.\n\nREPL console\n------------\n\nTo run REPL console use command\n\n    railway console\n\nor it's shortcut\n\n    railway c\n\nIt just simple node-js console with some Railway bindings, e.g. models. Just one note\nabout working with console. Node.js is asynchronous by its nature, and it's great\nbut it made console debugging much more complicated, because you should use callback\nto fetch result from database, for example. I have added one useful method to\nsimplify async debugging using railway console. It's name `c`, you can pass it\nas parameter to any function requires callback, and it will store parameters passed\nto callback to variables `_0, _1, ..., _N` where N is index in `arguments`.\n\nExample:\n\n    railway c\n    railway> User.find(53, c)\n    Callback called with 2 arguments:\n    _0 = null\n    _1 = [object Object]\n    railway> _1\n    { email: [Getter/Setter],\n      password: [Getter/Setter],\n      activationCode: [Getter/Setter],\n      activated: [Getter/Setter],\n      forcePassChange: [Getter/Setter],\n      isAdmin: [Getter/Setter],\n      id: [Getter/Setter] }\n\nLocalization\n------------\n\nTo add another language to app just create yml file in `config/locales`,\nfor example `config/locales/jp.yml`, copy contents of `config/locales/en.yml` to new\nfile and rename root node (`en` to `jp` in that case), also in `lang` section rename\n`name` to Japanese (for example).\n\nNext step - rename email files in `app/views/emails`, copy all files `*.en.html` \nand `*.en.text` to `*.jp.html` and `*.jp.text` and translate new files.\n\nNOTE: translation can contain `%` symbol(s), that means variable substitution\n\nLogger\n-----\n\n    app.set('quiet', true); // force logger to log into `log/#{app.settings.env}.log`\n    railway.logger.write(msg); // to log message\n\nConfiguring\n===========\n\nRailway has some configuration options allows to customize app behavior\n\neval cache\n----------\n\nEnable controllers caching, should be turned on in prd. In development mode\ndisabling cache allows to avoid server restarting after each model/controller change\n\n    app.disable('eval cache'); // in config/environments/development.js\n    app.enable('eval cache'); // in config/environments/production.js\n\nmodel cache\n-----------\n\nSame option for models. When disabled model files evaluated per each request.\n\n    app.disable('model cache'); // in config/environments/development.js\n\nview cache\n----------\n\nExpress.js option, enables view caching.\n\n    app.disable('view cache'); // in config/environments/development.js\n\nquiet\n-----\n\nWrite logs to `log/NODE_ENV.log`\n\n    app.set('quiet', true); // in config/environments/test.js\n\nmerge javascripts\n-----------------\n\nJoin all javascript files listed in `javascript_include_tag` into one\n\n    app.enable('merge javascripts'); // in config/environments/production.js\n\nmerge stylesheets\n-----------------\n\nJoin all stylesheet files listed in `stylesheets_include_tag` into one\n\n    app.enable('merge stylesheets'); // in config/environments/production.js\n\nMIT License\n===========\n\n    Copyright (C) 2011 by Anatoliy Chakkaev\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n\n\n  [1]: http://node-js.ru\n  [2]: https://github.com/1602/jugglingdb\n","maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"1.0.1":{"name":"railway","version":"1.0.1","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"url":"http://railwayjs.com","main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"yaml-js":">= 0.0.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.6","seedjs":"*","express":"~ 2.x"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{"jugglingdb":">= 0.1.3","nodeunit":"*","semicov":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"_npmUser":{"name":"anatoliy","email":"mail@anatoliy.in"},"_id":"railway@1.0.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.8.0","_defaultsLoaded":true,"dist":{"shasum":"37223bb8429d4706383a1b107eb1c377ca87b918","tarball":"https://registry.npmjs.org/railway/-/railway-1.0.1.tgz","integrity":"sha512-tEtyjGImN9PmtITkQ+JQsDW7QjDEF/gwFIkGmiCUZZgndCsuoxBiY6+5vh3+Ct59AjaTK3xU6SAXDU4Iv2t7cQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqxTBzLAps1CyNSB3pGDyd66BaYraBL6rjM53ac7RsLgIgAJ7HAhPNFXg9gjMOPCmjodu5KDYapTwxoVtUMpKQ+mI="}]},"readme":"About [<img src=\"https://secure.travis-ci.org/1602/express-on-railway.png\" />](http://travis-ci.org/#!/1602/express-on-railway)\n=====\n\nRailwayJS - MVC framework based on Exress. Ruby-on-Rails inspired. It allows you to build web application in minutes.  \n\nInstallation\n============\n\nOption 1: npm\n\n    $ sudo npm install railway -g\n\nOption 2: GitHub\n\n    $ git clone git://github.com/1602/express-on-railway.git\n    $ cd express-on-railway\n    $ git submodule update --init\n    $ npm link\n\nUsage\n=====\n\n    # initialize app\n    $ railway init blog && cd blog\n    $ npm install -l\n\n    # generate scaffold\n    $ railway generate crud post title content published:boolean\n\n    # run server on port 3000\n    $ railway s 3000\n\n    # visit appp\n    $ open http://localhost:3000/posts\n\n## Participation\n\nCheck status of project on trello board: https://trello.com/board/railwayjs/4f0a0d49128365065e008a1d\nFeel free to vote and comment on cards (tickets/issues), if you want to join team -- send me a message with your email.\n\nShort functionality review\n==========================\n\nCLI tool\n--------\n\n    Usage: railway command [argument(s)]\n\n    Commands:\n      h,  help                     Display usage information\n      i,  init                     Initialize railway app\n      g,  generate [smth]          Generate something awesome\n      r,  routes [filter]          Display application routes\n      c,  console                  Debug console\n      s,  server [port]            Run railway server\n      x,  install gitUrl [extName] Install railway eXtension\n\n**railway init [appname][ key(s)]**\n    keys:\n    --coffee                 # Default: no coffee by default\n    --tpl jade|ejs           # Default: ejs\n    --db redis|mongoose|riak # Default: mongoose\n\n**railway generate smth** - smth = generator name (controller, model, scaffold, ...can be extended via plugins)\n\nbuiltin generator: model\n`railway g model user email password approved:boolean` # generate User model with fields user, password: String, approved: Boolean\n`railway g post title content --coffee` # generate Post model in coffee script syntax\n\nbuiltin generator: scaffold (crud)\n`railway g scaffold todo title done:boolean --coffee` # generate scaffold for Todo model (title: String, done: Boolean)\n\nbuiltin generator: controller\n`railway g controller sessions new create destroy` # generate sessions controller with actions and views\n\n**railway server 8000** or **PORT=8000 node server** - run server on port `8000`\n\n**railway c** - run debugging console (see details below)\n\n**railway r** - print routes map (see details below)\n\n\nDirectory structure\n-------------------\n\nOn initialization rails-like directories tree generated, like that:\n\n    .\n    |-- app\n    |   |-- controllers\n    |   |   |-- admin\n    |   |   |   |-- categories_controller.js\n    |   |   |   |-- posts_controller.js\n    |   |   |   `-- tags_controller.js\n    |   |   |-- comments_controller.js\n    |   |   `-- posts_controller.js\n    |   |-- models\n    |   |   |-- category.js\n    |   |   |-- post.js\n    |   |   `-- tag.js\n    |   |-- views\n    |   |   |-- admin\n    |   |   |   `-- posts\n    |   |   |       |-- edit.ejs\n    |   |   |       |-- index.ejs\n    |   |   |       |-- new.ejs\n    |   |   |-- layouts\n    |   |   |   `-- application_layout.ejs\n    |   |   |-- partials\n    |   |   `-- posts\n    |   |       |-- index.ejs\n    |   |       `-- show.ejs\n    |   `-- helpers\n    |       |-- admin\n    |       |   |-- posts_helper.js\n    |       |   `-- tags_helper.js\n    |       `-- posts_helper.js\n    `-- config\n        |-- database.json\n        |-- routes.js\n        |-- tsl.cert\n        `-- tsl.key\n\nHTTPS Support\n-------------\n\nJust place your key and cert into config directory, railway will use it.\nDefault names for keys are `tsl.key` and `tsl.cert`, but you can store in in another place, in that case just pass filenames to createServer function:\n`server.js`\n\n    require('railway').createServer({key: '/tmp/key.pem', cert: '/tmp/cert.pem'});\n\nFew helpful commands:\n\n    # generate private key\n    openssl genrsa -out config/tsl.key\n    # generate cert\n    openssl req -new -x509 -key config/tsl.key  -out config/tsl.cert -days 1095 -batch\n\nRouting\n-------\n\nNow we do not have to tediously describe REST rotes for each resource, enough to write in `config/routes.js` code like this:\n\n    exports.routes = function (map) {\n        map.resources('posts', function (post) {\n            post.resources('comments');\n        });\n    };\n\ninstead of:\n\n    var ctl = require('./lib/posts_controller.js');\n    app.get('/posts/new.:format?', ctl.new);\n    app.get('/posts.:format?', ctl.index);\n    app.post('/posts.:format?', ctl.create);\n    app.get('/posts/:id.:format?', ctl.show);\n    app.put('/posts/:id.:format?', ctl.update);\n    app.delete('/posts/:id.:format?', ctl.destroy);\n    app.get('/posts/:id/edit.:format?', ctl.edit);\n\n    var com_ctl = require('./lib/comments_controller.js');\n    app.get('/posts/:post_id/comments/new.:format?', com_ctl.new);\n    app.get('/posts/:post_id/comments.:format?', com_ctl.index);\n    app.post('/posts/:post_id/comments.:format?', com_ctl.create);\n    app.get('/posts/:post_id/comments/:id.:format?', com_ctl.show);\n    app.put('/posts/:post_id/comments/:id.:format?', com_ctl.update);\n    app.delete('/posts/:post_id/comments/:id.:format?', com_ctl.destroy);\n    app.get('/posts/:post_id/comments/:id/edit.:format?', com_ctl.edit);\n\nand you can more finely tune the resources to specify certain actions, middleware, and other. Here example routes of [my blog][1]:\n\n    exports.routes = function (map) {\n        map.get('/', 'posts#index');\n        map.get(':id', 'posts#show');\n        map.get('sitemap.txt', 'posts#map');\n    \n        map.namespace('admin', function (admin) {\n            admin.resources('posts', {middleware: basic_auth, except: ['show']}, function (post) {\n                post.resources('comments');\n                post.get('likes', 'posts#likes')\n            });\n        });\n    };\n\nsince version 0.2.0 it is possible to use generic routes:\n\n    exports.routes = function (map) {\n        map.get(':controller/:action/:id');\n        map.all(':controller/:action');\n    };\n\nif you have `custom_controller` with `test` action inside it you can now do:\n\n    GET /custom/test\n    POST /custom/test\n    GET /custom/test/1 // also sets params.id to 1\n\nfor debugging routes described in `config/routes.js` you can use `railway routes` command:\n\n    $ railway routes\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n         admin_posts POST   /admin/posts.:format?           admin/posts#create\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n          admin_post DELETE /admin/posts/:id.:format?       admin/posts#destroy\n          admin_post PUT    /admin/posts/:id.:format?       admin/posts#update\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\nFilter by method:\n\n    $ railway routes GET\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n\nFilter by helper name:\n\n    $ railway routes _admin\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\n\nHelpers\n-------\n\nIn addition to regular rails helpers `link_to`, `form_for`, `javascript_include_tag`, `form_for`, etc. there are also helpers for routing: each route generates a helper method that can be invoked in a view:\n\n    <%- link_to(\"New post\", new_admin_post) %>\n    <%- link_to(\"New post\", edit_admin_post(post)) %>\n\ngenerates output:\n\n    <a href=\"/admin/posts/new\">New post</a>\n    <a href=\"/admin/posts/10/edit\">New post</a>\n\nControllers\n-----------\n\nThe controller is a module containing the declaration of actions such as this:\n\n    beforeFilter(loadPost, {only: ['edit', 'update', 'destroy']});\n\n    action('index', function () {\n        Post.allInstances({order: 'created_at'}, function (collection) {\n            render({ posts: collection });\n        });\n    });\n\n    action('create', function () {\n        Post.create(req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    action('new', function () {\n        render({ post: new Post });\n    });\n\n    action('edit', function () {\n        render({ post: request.post });\n    });\n\n    action('update', function () {\n        request.post.save(req.locale, req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    function loadPost () {\n        Post.find(req.params.id, function () {\n            request.post = this;\n            next();\n        });\n    }\n\n## Generators ##\n\nRailway offers several built-in generators: for a model, controller and for \ninitialization. Can be invoked as follows:\n\n    railway generate [what] [params]\n\n`what` can be `model`, `controller` or `scaffold`. Example of controller generation:\n\n    $ railway generate controller admin/posts index new edit update\n    exists  app/\n    exists  app/controllers/\n    create  app/controllers/admin/\n    create  app/controllers/admin/posts_controller.js\n    create  app/helpers/\n    create  app/helpers/admin/\n    create  app/helpers/admin/posts_helper.js\n    exists  app/views/\n    create  app/views/admin/\n    create  app/views/admin/posts/\n    create  app/views/admin/posts/index.ejs\n    create  app/views/admin/posts/new.ejs\n    create  app/views/admin/posts/edit.ejs\n    create  app/views/admin/posts/update.ejs\n\nCurrently it generates only `*.ejs` views\n\nModels\n------\n\nCheckout [JugglingDB][2] docs to see how to work with models.\n\nREPL console\n------------\n\nTo run REPL console use command\n\n    railway console\n\nor it's shortcut\n\n    railway c\n\nIt just simple node-js console with some Railway bindings, e.g. models. Just one note\nabout working with console. Node.js is asynchronous by its nature, and it's great\nbut it made console debugging much more complicated, because you should use callback\nto fetch result from database, for example. I have added one useful method to\nsimplify async debugging using railway console. It's name `c`, you can pass it\nas parameter to any function requires callback, and it will store parameters passed\nto callback to variables `_0, _1, ..., _N` where N is index in `arguments`.\n\nExample:\n\n    railway c\n    railway> User.find(53, c)\n    Callback called with 2 arguments:\n    _0 = null\n    _1 = [object Object]\n    railway> _1\n    { email: [Getter/Setter],\n      password: [Getter/Setter],\n      activationCode: [Getter/Setter],\n      activated: [Getter/Setter],\n      forcePassChange: [Getter/Setter],\n      isAdmin: [Getter/Setter],\n      id: [Getter/Setter] }\n\nLocalization\n------------\n\nTo add another language to app just create yml file in `config/locales`,\nfor example `config/locales/jp.yml`, copy contents of `config/locales/en.yml` to new\nfile and rename root node (`en` to `jp` in that case), also in `lang` section rename\n`name` to Japanese (for example).\n\nNext step - rename email files in `app/views/emails`, copy all files `*.en.html` \nand `*.en.text` to `*.jp.html` and `*.jp.text` and translate new files.\n\nNOTE: translation can contain `%` symbol(s), that means variable substitution\n\nLogger\n-----\n\n    app.set('quiet', true); // force logger to log into `log/#{app.settings.env}.log`\n    railway.logger.write(msg); // to log message\n\nConfiguring\n===========\n\nRailway has some configuration options allows to customize app behavior\n\neval cache\n----------\n\nEnable controllers caching, should be turned on in prd. In development mode\ndisabling cache allows to avoid server restarting after each model/controller change\n\n    app.disable('eval cache'); // in config/environments/development.js\n    app.enable('eval cache'); // in config/environments/production.js\n\nmodel cache\n-----------\n\nSame option for models. When disabled model files evaluated per each request.\n\n    app.disable('model cache'); // in config/environments/development.js\n\nview cache\n----------\n\nExpress.js option, enables view caching.\n\n    app.disable('view cache'); // in config/environments/development.js\n\nquiet\n-----\n\nWrite logs to `log/NODE_ENV.log`\n\n    app.set('quiet', true); // in config/environments/test.js\n\nmerge javascripts\n-----------------\n\nJoin all javascript files listed in `javascript_include_tag` into one\n\n    app.enable('merge javascripts'); // in config/environments/production.js\n\nmerge stylesheets\n-----------------\n\nJoin all stylesheet files listed in `stylesheets_include_tag` into one\n\n    app.enable('merge stylesheets'); // in config/environments/production.js\n\nMIT License\n===========\n\n    Copyright (C) 2011 by Anatoliy Chakkaev\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n\n\n  [1]: http://node-js.ru\n  [2]: https://github.com/1602/jugglingdb\n","maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"Install the Railway CLI from @railway/cli"},"1.0.1-1":{"name":"railway","version":"1.0.1-1","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework, fully ExpressJS compatible","keywords":["mvc","web-framework","rails","ruby-on-rails","express","railway"],"homepage":"http://railwayjs.com","engines":["node >= 0.4.0"],"url":"http://railwayjs.com","main":"lib/onrailway","bin":{"railway":"bin/railway","rw":"bin/railway"},"dependencies":{"yaml-js":">= 0.0.2","coffee-script":">= 1.1.1","ejs-ext":">= 0.0.8","jade-ext":">= 0.0.5","railway-routes":">= 0.0.6","seedjs":"*","express":"~ 2.x"},"repository":{"type":"git","url":"https://github.com/1602/express-on-railway.git"},"devDependencies":{"jugglingdb":">= 0.1.3","nodeunit":"*","semicov":"*"},"scripts":{"test":"./support/nodeunit/bin/nodeunit test"},"readme":"About [<img src=\"https://secure.travis-ci.org/1602/express-on-railway.png\" />](http://travis-ci.org/#!/1602/express-on-railway)\n=====\n\nRailwayJS - MVC framework based on Exress. Ruby-on-Rails inspired. It allows you to build web application in minutes.  \n\nInstallation\n============\n\nOption 1: npm\n\n    $ sudo npm install railway -g\n\nOption 2: GitHub\n\n    $ git clone git://github.com/1602/express-on-railway.git\n    $ cd express-on-railway\n    $ git submodule update --init\n    $ npm link\n\nUsage\n=====\n\n    # initialize app\n    $ railway init blog && cd blog\n    $ npm install -l\n\n    # generate scaffold\n    $ railway generate crud post title content published:boolean\n\n    # run server on port 3000\n    $ railway s 3000\n\n    # visit appp\n    $ open http://localhost:3000/posts\n\n## Participation\n\nCheck status of project on trello board: https://trello.com/board/railwayjs/4f0a0d49128365065e008a1d\nFeel free to vote and comment on cards (tickets/issues), if you want to join team -- send me a message with your email.\n\nShort functionality review\n==========================\n\nCLI tool\n--------\n\n    Usage: railway command [argument(s)]\n\n    Commands:\n      h,  help                     Display usage information\n      i,  init                     Initialize railway app\n      g,  generate [smth]          Generate something awesome\n      r,  routes [filter]          Display application routes\n      c,  console                  Debug console\n      s,  server [port]            Run railway server\n      x,  install gitUrl [extName] Install railway eXtension\n\n**railway init [appname][ key(s)]**\n    keys:\n    --coffee                 # Default: no coffee by default\n    --tpl jade|ejs           # Default: ejs\n    --db redis|mongoose|riak # Default: mongoose\n\n**railway generate smth** - smth = generator name (controller, model, scaffold, ...can be extended via plugins)\n\nbuiltin generator: model\n`railway g model user email password approved:boolean` # generate User model with fields user, password: String, approved: Boolean\n`railway g post title content --coffee` # generate Post model in coffee script syntax\n\nbuiltin generator: scaffold (crud)\n`railway g scaffold todo title done:boolean --coffee` # generate scaffold for Todo model (title: String, done: Boolean)\n\nbuiltin generator: controller\n`railway g controller sessions new create destroy` # generate sessions controller with actions and views\n\n**railway server 8000** or **PORT=8000 node server** - run server on port `8000`\n\n**railway c** - run debugging console (see details below)\n\n**railway r** - print routes map (see details below)\n\n\nDirectory structure\n-------------------\n\nOn initialization rails-like directories tree generated, like that:\n\n    .\n    |-- app\n    |   |-- controllers\n    |   |   |-- admin\n    |   |   |   |-- categories_controller.js\n    |   |   |   |-- posts_controller.js\n    |   |   |   `-- tags_controller.js\n    |   |   |-- comments_controller.js\n    |   |   `-- posts_controller.js\n    |   |-- models\n    |   |   |-- category.js\n    |   |   |-- post.js\n    |   |   `-- tag.js\n    |   |-- views\n    |   |   |-- admin\n    |   |   |   `-- posts\n    |   |   |       |-- edit.ejs\n    |   |   |       |-- index.ejs\n    |   |   |       |-- new.ejs\n    |   |   |-- layouts\n    |   |   |   `-- application_layout.ejs\n    |   |   |-- partials\n    |   |   `-- posts\n    |   |       |-- index.ejs\n    |   |       `-- show.ejs\n    |   `-- helpers\n    |       |-- admin\n    |       |   |-- posts_helper.js\n    |       |   `-- tags_helper.js\n    |       `-- posts_helper.js\n    `-- config\n        |-- database.json\n        |-- routes.js\n        |-- tsl.cert\n        `-- tsl.key\n\nHTTPS Support\n-------------\n\nJust place your key and cert into config directory, railway will use it.\nDefault names for keys are `tsl.key` and `tsl.cert`, but you can store in in another place, in that case just pass filenames to createServer function:\n`server.js`\n\n    require('railway').createServer({key: '/tmp/key.pem', cert: '/tmp/cert.pem'});\n\nFew helpful commands:\n\n    # generate private key\n    openssl genrsa -out config/tsl.key\n    # generate cert\n    openssl req -new -x509 -key config/tsl.key  -out config/tsl.cert -days 1095 -batch\n\nRouting\n-------\n\nNow we do not have to tediously describe REST rotes for each resource, enough to write in `config/routes.js` code like this:\n\n    exports.routes = function (map) {\n        map.resources('posts', function (post) {\n            post.resources('comments');\n        });\n    };\n\ninstead of:\n\n    var ctl = require('./lib/posts_controller.js');\n    app.get('/posts/new.:format?', ctl.new);\n    app.get('/posts.:format?', ctl.index);\n    app.post('/posts.:format?', ctl.create);\n    app.get('/posts/:id.:format?', ctl.show);\n    app.put('/posts/:id.:format?', ctl.update);\n    app.delete('/posts/:id.:format?', ctl.destroy);\n    app.get('/posts/:id/edit.:format?', ctl.edit);\n\n    var com_ctl = require('./lib/comments_controller.js');\n    app.get('/posts/:post_id/comments/new.:format?', com_ctl.new);\n    app.get('/posts/:post_id/comments.:format?', com_ctl.index);\n    app.post('/posts/:post_id/comments.:format?', com_ctl.create);\n    app.get('/posts/:post_id/comments/:id.:format?', com_ctl.show);\n    app.put('/posts/:post_id/comments/:id.:format?', com_ctl.update);\n    app.delete('/posts/:post_id/comments/:id.:format?', com_ctl.destroy);\n    app.get('/posts/:post_id/comments/:id/edit.:format?', com_ctl.edit);\n\nand you can more finely tune the resources to specify certain actions, middleware, and other. Here example routes of [my blog][1]:\n\n    exports.routes = function (map) {\n        map.get('/', 'posts#index');\n        map.get(':id', 'posts#show');\n        map.get('sitemap.txt', 'posts#map');\n    \n        map.namespace('admin', function (admin) {\n            admin.resources('posts', {middleware: basic_auth, except: ['show']}, function (post) {\n                post.resources('comments');\n                post.get('likes', 'posts#likes')\n            });\n        });\n    };\n\nsince version 0.2.0 it is possible to use generic routes:\n\n    exports.routes = function (map) {\n        map.get(':controller/:action/:id');\n        map.all(':controller/:action');\n    };\n\nif you have `custom_controller` with `test` action inside it you can now do:\n\n    GET /custom/test\n    POST /custom/test\n    GET /custom/test/1 // also sets params.id to 1\n\nfor debugging routes described in `config/routes.js` you can use `railway routes` command:\n\n    $ railway routes\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n         admin_posts POST   /admin/posts.:format?           admin/posts#create\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n          admin_post DELETE /admin/posts/:id.:format?       admin/posts#destroy\n          admin_post PUT    /admin/posts/:id.:format?       admin/posts#update\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\nFilter by method:\n\n    $ railway routes GET\n                     GET    /                               posts#index\n                     GET    /:id                            posts#show\n         sitemap.txt GET    /sitemap.txt                    posts#map\n         admin_posts GET    /admin/posts.:format?           admin/posts#index\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n\nFilter by helper name:\n\n    $ railway routes _admin\n      new_admin_post GET    /admin/posts/new.:format?       admin/posts#new\n     edit_admin_post GET    /admin/posts/:id/edit.:format?  admin/posts#edit\n    likes_admin_post PUT    /admin/posts/:id/likes.:format? admin/posts#likes\n\n\nHelpers\n-------\n\nIn addition to regular rails helpers `link_to`, `form_for`, `javascript_include_tag`, `form_for`, etc. there are also helpers for routing: each route generates a helper method that can be invoked in a view:\n\n    <%- link_to(\"New post\", new_admin_post) %>\n    <%- link_to(\"New post\", edit_admin_post(post)) %>\n\ngenerates output:\n\n    <a href=\"/admin/posts/new\">New post</a>\n    <a href=\"/admin/posts/10/edit\">New post</a>\n\nControllers\n-----------\n\nThe controller is a module containing the declaration of actions such as this:\n\n    beforeFilter(loadPost, {only: ['edit', 'update', 'destroy']});\n\n    action('index', function () {\n        Post.allInstances({order: 'created_at'}, function (collection) {\n            render({ posts: collection });\n        });\n    });\n\n    action('create', function () {\n        Post.create(req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    action('new', function () {\n        render({ post: new Post });\n    });\n\n    action('edit', function () {\n        render({ post: request.post });\n    });\n\n    action('update', function () {\n        request.post.save(req.locale, req.body, function () {\n            redirect(path_to.admin_posts);\n        });\n    });\n\n    function loadPost () {\n        Post.find(req.params.id, function () {\n            request.post = this;\n            next();\n        });\n    }\n\n## Generators ##\n\nRailway offers several built-in generators: for a model, controller and for \ninitialization. Can be invoked as follows:\n\n    railway generate [what] [params]\n\n`what` can be `model`, `controller` or `scaffold`. Example of controller generation:\n\n    $ railway generate controller admin/posts index new edit update\n    exists  app/\n    exists  app/controllers/\n    create  app/controllers/admin/\n    create  app/controllers/admin/posts_controller.js\n    create  app/helpers/\n    create  app/helpers/admin/\n    create  app/helpers/admin/posts_helper.js\n    exists  app/views/\n    create  app/views/admin/\n    create  app/views/admin/posts/\n    create  app/views/admin/posts/index.ejs\n    create  app/views/admin/posts/new.ejs\n    create  app/views/admin/posts/edit.ejs\n    create  app/views/admin/posts/update.ejs\n\nCurrently it generates only `*.ejs` views\n\nModels\n------\n\nCheckout [JugglingDB][2] docs to see how to work with models.\n\nREPL console\n------------\n\nTo run REPL console use command\n\n    railway console\n\nor it's shortcut\n\n    railway c\n\nIt just simple node-js console with some Railway bindings, e.g. models. Just one note\nabout working with console. Node.js is asynchronous by its nature, and it's great\nbut it made console debugging much more complicated, because you should use callback\nto fetch result from database, for example. I have added one useful method to\nsimplify async debugging using railway console. It's name `c`, you can pass it\nas parameter to any function requires callback, and it will store parameters passed\nto callback to variables `_0, _1, ..., _N` where N is index in `arguments`.\n\nExample:\n\n    railway c\n    railway> User.find(53, c)\n    Callback called with 2 arguments:\n    _0 = null\n    _1 = [object Object]\n    railway> _1\n    { email: [Getter/Setter],\n      password: [Getter/Setter],\n      activationCode: [Getter/Setter],\n      activated: [Getter/Setter],\n      forcePassChange: [Getter/Setter],\n      isAdmin: [Getter/Setter],\n      id: [Getter/Setter] }\n\nLocalization\n------------\n\nTo add another language to app just create yml file in `config/locales`,\nfor example `config/locales/jp.yml`, copy contents of `config/locales/en.yml` to new\nfile and rename root node (`en` to `jp` in that case), also in `lang` section rename\n`name` to Japanese (for example).\n\nNext step - rename email files in `app/views/emails`, copy all files `*.en.html` \nand `*.en.text` to `*.jp.html` and `*.jp.text` and translate new files.\n\nNOTE: translation can contain `%` symbol(s), that means variable substitution\n\nLogger\n-----\n\n    app.set('quiet', true); // force logger to log into `log/#{app.settings.env}.log`\n    railway.logger.write(msg); // to log message\n\nConfiguring\n===========\n\nRailway has some configuration options allows to customize app behavior\n\neval cache\n----------\n\nEnable controllers caching, should be turned on in prd. In development mode\ndisabling cache allows to avoid server restarting after each model/controller change\n\n    app.disable('eval cache'); // in config/environments/development.js\n    app.enable('eval cache'); // in config/environments/production.js\n\nmodel cache\n-----------\n\nSame option for models. When disabled model files evaluated per each request.\n\n    app.disable('model cache'); // in config/environments/development.js\n\nview cache\n----------\n\nExpress.js option, enables view caching.\n\n    app.disable('view cache'); // in config/environments/development.js\n\nquiet\n-----\n\nWrite logs to `log/NODE_ENV.log`\n\n    app.set('quiet', true); // in config/environments/test.js\n\nmerge javascripts\n-----------------\n\nJoin all javascript files listed in `javascript_include_tag` into one\n\n    app.enable('merge javascripts'); // in config/environments/production.js\n\nmerge stylesheets\n-----------------\n\nJoin all stylesheet files listed in `stylesheets_include_tag` into one\n\n    app.enable('merge stylesheets'); // in config/environments/production.js\n\nMIT License\n===========\n\n    Copyright (C) 2011 by Anatoliy Chakkaev\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n\n\n  [1]: http://node-js.ru\n  [2]: https://github.com/1602/jugglingdb\n","readmeFilename":"README.md","_id":"railway@1.0.1-1","dist":{"shasum":"35b758b69557e2b47acb398bfcf664d772e68695","tarball":"https://registry.npmjs.org/railway/-/railway-1.0.1-1.tgz","integrity":"sha512-9HAFv1iQPXGSm3eZGvjpi6s5RxFB3xnTnOO/jgayilsZzenCwzKXbVTuDxRU9w25CIrT9ruP+U89hdwYlovTYg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF2sFrvrKIQY2dLKuhvR6BbapVEgjRncVWZVYEVmPGQGAiBl2zI/m+IjzXUhusZr0aDSUksQPaClI15WYdvY3zKiAQ=="}]},"_npmVersion":"1.1.64","_npmUser":{"name":"anatoliy","email":"mail@anatoliy.in"},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"deprecated":"railwayjs is deprecated. the railway npm package is now for railway.app"},"0.1.7-pre2":{"name":"railway","version":"0.1.7-pre2","author":{"name":"Anatoliy Chakkaev"},"description":"RailwayJS - Ruby-on-Rails inspired MVC web framework","homepage":"http://github.com/1602/express-on-railway","engines":["node >= 0.3.0"],"main":"lib/onrailway","bin":{"railway":"bin/railway"},"dependencies":{"ejs":">= 0.2.1","ejs-ext":">= 0.0.2","jade-ext":">= 0.0.1","express":">= 2.2.2","nodeunit":">= 0.5.0","yaml":">= 0.1.2","coffee-script":">= 1.1.1"},"repository":{"type":"git","url":"git://github.com/1602/express-on-railway.git"},"devDependencies":{},"_id":"railway@0.1.7-pre2","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"35388c5b1ebd74aafefe4b9e0d915f8a3c7e817a","tarball":"https://registry.npmjs.org/railway/-/railway-0.1.7pre2.tgz","integrity":"sha512-dtDd5Qo7otL5PiG3jx9JGJMPLEFh1ClSekVtO5Rq+D3xFi7gNEvKRZzaJlh7T7y7PpNB6e9KP5lOcxXMbF38LA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUwP0AhfOtH65WMnPJrcSI9gXvTi4CBbfv5OAhAf59RwIgI0f/MUFhJWZe7aujRBTs9prUxuDp6qk2vYXmldYfn0M="}]},"scripts":{},"directories":{}},"2.0.0":{"name":"railway","version":"2.0.0","main":"index.js","bin":{"railway":"index.js"},"homepage":"https://railway.app/","bugs":{"url":"https://discord.gg/uFDddmc"},"scripts":{"start":"node dist/index.js","build":"rimraf dist && tsc -p . && chmod +x dist/index.js","copypackage":"cp -rf package.json dist"},"dependencies":{"chalk":"^4.1.0","cli-spinners":"^2.3.0","ink":"^2.7.1","ink-link":"^1.1.0","ink-select-input":"^3.1.2","ink-text-input":"^3.3.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1"},"devDependencies":{"@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/ink":"^2.0.3","@types/ink-select-input":"^3.0.0","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","rimraf":"^3.0.2","tslib":"^2.0.0","typescript":"^3.9.5"},"_id":"railway@2.0.0","dist":{"shasum":"982a2eb49da78561fcda610dd28b1ce060020bae","integrity":"sha512-4/tGfeScGMswQU+u+kT575baPWKCXQMiVs5sMFmkq2SOpbQFwXxWp18ZSTrXwSQ2E6Kfjw4JTlmpSkwJFRU4cg==","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.0.tgz","fileCount":21,"unpackedSize":27532,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+olbCRA9TVsSAnZWagAAU/gP/2zeMndFyV28gvD+Brkt\nckimNs5W1hUd/BxvNh/lD6IhfgnnEoJ/EOb9VR3yxW5cRTct1EHwld+QGgBE\nxPhvB82e41eLO4vOO1/72gKpb+tz4AzrdC4nHruGDQxffg+QTb+ZON+MNt2h\nd1TQqUy9nMWLyEMkWnyDLz1Keu/dKns6Fy1QUJBivsBuNFBJOfxzCkJoufgy\nNPKQ4N88T5H0LvoMgTmptrX2MbnRrtxcUo8gBnZKPJm7Mk2WhFphDJeDzOiI\ngzjduUSYS7IhonGwLcmndsuNX+2OlLsCX5CqqwJ2Mo7O+lOwkpfJxp9EQH51\nZGNj4z+ip0Usp0g8UYteBQlYpwzvKQoNru4sM9XIjFHqLx2n2dPnbbR7lHKy\nZlW6kqG5cCvnIQCGRv8BYm/0OgW+rCjOxMUd/X+Kkz7O3nvSoorhLqGBahn7\n2NIAsE/3VJ2Be6u+Unkn1eTU/VaPUk9N4K+mCUgJACBDV24H6M8A9L2eD4AR\nhK7igLFjIzcgmawtpNo0mM9hRZZlw35IWGnixlHzbT6YLCqqkwqx/OYB4lYg\nsoi+dWmUCjzx2jpcwtoa2YhOBPgCbFeOP4jf72rzSbOJgcBUPVy2x7NzPv72\nrUuVEi40NrxNSYYUIKE23S/aARxpVgMIRbMhQf2zvGrPHGTYP0j1BIx6wm/T\nchbW\r\n=fjLq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC80UrRNCJ7/AW4hLx93VNxnxeyvR2IQyaUx3rVeFIFzQIgd/IMcoHy3xIf4Hnpt5WHeTDLALp500GrI6V7gElF8xQ="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.0_1593477466989_0.3095711420782674"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.1":{"name":"railway","version":"2.0.1","main":"dist/index.js","bin":{"railway":"index.js"},"homepage":"https://railway.app/","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && tsc -p . && chmod +x dist/index.js","clean":"rimraf dist tsconfig.tsbuildinfo","copypackage":"cp -rf package.json dist"},"dependencies":{"chalk":"^4.1.0","cli-spinners":"^2.3.0","ink":"^2.7.1","ink-link":"^1.1.0","ink-select-input":"^3.1.2","ink-text-input":"^3.3.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tslib":"^2.0.0"},"devDependencies":{"@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/ink":"^2.0.3","@types/ink-select-input":"^3.0.0","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","rimraf":"^3.0.2","typescript":"^3.9.5"},"description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.1","dist":{"shasum":"34b3a5743dd884fb3bfffdff57e20bb5765d2632","integrity":"sha512-IkAZl2okudbXpFL2K5kqOg2bRpaDLjCiFAbOGkDPFOY8O6xN7cDSgqXxvFmnMGwy+Pf2dJUZ7imw6o5PyT+4eA==","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.1.tgz","fileCount":22,"unpackedSize":27824,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/JNhCRA9TVsSAnZWagAABQoP/iYhy2oGEdkoKJ2RBp8r\nyG0Tz+/SB6SlqavO7rDI3zxQ1YlE5qtxreL1CwLPwpj6z40CIMoool8rNbH3\nhgVg6yxhH3bebhlYmDcL/aExiUNuCBayx4EZd8PdHP36MPmnidMMwaQao5v1\nxW7vop9q5lAIBLYtBGit6v7mw9trFdUEbm5c8kcSz9VmhHvztWnTQHwGXJ77\n5qj1VCHQume+ArIWVnLhspSxf9nws5WgaeOHa3kG9iR6gODygK3rcsPMvNZZ\n1SDZeDBEH1jIx+kDej8ei6RNIWRLQeXA6Y3ximuvGKN681cVByyc3klpUYUq\nRXwHpxz8fgDOjH7hoSYt7Oaih3ElHd3hHONcPm68rvx0TUym3Ny2SkHgJjhw\npGumJQqLeGyAgDXyImhTDK8t49CpE1y50x8w/9YADEzzSE95HTgMhfj8rPUu\nKelOQ3u3v1645d1vVU7k1pyHy3SDICvqlUCvUjGnzuH83ju/nrxKLAH7I/VA\nwwLP3e7JWKv+01RGrfxXF3E8EwUm1dOb0wHD6GJLlQRxJec80USeiP95IilP\nQeLgfvjXYpR/McVZCYd/l2MI3K+MC3lPKmhmyHZSm3RnJtaivz+XYoz08PI5\n/VKI/fxWVHk+ze/b9dUwHSSIDOL/hxGbIx8gbKBqRHFBzl3hLng1nXU/zSDy\nO8vH\r\n=4zc1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGSJJjMDwwln1NCvEogfIHYX4AdH3FvvqFlLI8vvJxVoAiBbggiL99l6W/GsRWnxLOmUVFlBY9NUs5mq+H3O844PgQ=="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.1_1593611104895_0.22436353279658294"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.2":{"name":"railway","version":"2.0.2","main":"index.js","bin":{"railway":"index.js"},"homepage":"https://railway.app/","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && tsc -p . && chmod +x dist/index.js","clean":"rimraf dist tsconfig.tsbuildinfo","copypackage":"cp -rf package.json README.md dist"},"dependencies":{"chalk":"^4.1.0","cli-spinners":"^2.3.0","ink":"^2.7.1","ink-link":"^1.1.0","ink-select-input":"^3.1.2","ink-text-input":"^3.3.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tslib":"^2.0.0"},"devDependencies":{"@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/ink":"^2.0.3","@types/ink-select-input":"^3.0.0","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","rimraf":"^3.0.2","typescript":"^3.9.5"},"description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.2","dist":{"shasum":"d5fb7f4f681e13376be9c60c397b6dd66e71b243","integrity":"sha512-Q4EfzvDddY3UPeU+1HKh2TJct+B9uXgp1pvv7efSA5sEnCrmoBcraynM64yqcGkXDemly45KQaV+VxtaAaYFKw==","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.2.tgz","fileCount":22,"unpackedSize":28593,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/MakCRA9TVsSAnZWagAAw64P/2Y2dOo7pMibcrVi+dYW\nwkcIUEK7dyGlslNBLaRpHECaC5/TiJQup3f94y6ZBNckeZHYPOhPbomVwbeu\njIrkvzQDkxNVjqH3ahoLSOV2Ab266eKwzXOkDfCCC5sgl+17qF27SedEGFZ6\nMRmuhjb60e9uaH2sMyyizdkNfA4/Nk+L7eWHtzmDIFRj6Jpp3eLmnT18uX6L\nz3xBjmqr34rGOrwG/XD+qGAT5I2ivu7qxuLRG97ALi3cx2HaFC8frkM8Vw54\nFvB4lALxmS2Ml04pEVN6K/0OUZCkW/NdKMUeMdzj6om3ieUq2M78DS7TWMzu\nh8ADuVPt1rL9RLwI2HjIUmGV++y6I1wKPDX0+Eoks3/KyW+fjVxxuE3vaKhT\nth3DIYgyJngdcrNvC+/qtTuj8st96Qx6h8hZUAJsV3B8PPBkJ2v1U3zrayo9\nYS7yDh/ZLbkneaNSkgwxYeOtmRl/pAt1uCJJR7S8b1V3jdmv7MckpZ2nqMMk\nk7wg7Ua4/BBN8lVY8F3ZhONPrlSehjBeEjmZcpVYljRQtM5ahZpJmlsKNKK2\nwgjY91C8dedEFTGRoqLh3LDdwl87ukQvdcNh7BR61rNYplWB749qFNF+g9/S\nFR2R3XrOTjR3H90+IoZL1M913zrL2vXwS6EFonMZ7RKxzE1UeWCGrAYGaBW7\niGk0\r\n=2GiF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlEH2FuK6rss5H6T4Yk6S4zUtnjkF7V+CJecUbSJm7PwIhAOS9rzf9Ns7QSo1VyHRss+PC4ZCVbxLST1gvi3p2cnn2"}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.2_1593624227861_0.4471220574014614"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.3":{"name":"railway","version":"2.0.3","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && NODE_ENV=development rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build"},"dependencies":{"chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","ink":"^2.7.1","ink-link":"^1.1.0","ink-select-input":"^3.1.2","ink-text-input":"^3.3.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tslib":"^2.0.0"},"devDependencies":{"@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/ink":"^2.0.3","@types/ink-select-input":"^3.0.0","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^3.9.5"},"gitHead":"3748bd78022004e3a185bedc48dd70c30c157a11","description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.3","_nodeVersion":"12.18.2","_npmVersion":"lerna/3.22.1/node@v12.18.2+x64 (darwin)","_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"dist":{"integrity":"sha512-L4Znl8C6xPmXrnlCdbJLY8Ev1vWNCBCddaLBTKeAO1YncqHBRscjKwNepn2M8xy34IQ5dypnS14pYiZtARWT6Q==","shasum":"105e5dfb2dbd4e6e014f7c6fa000c573e3f95740","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.3.tgz","fileCount":45,"unpackedSize":70683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHt5aCRA9TVsSAnZWagAAiK8QAIrW1ViMHm/CK43x274d\nM1tAiCXPV9pJsIn0if/RKMHuCaSrRKAJHU3Ru/7OcP7ZwAC5ztuTdRbd7fWz\nEm2cpDQLePBK+37qetjxBRdy/X1kL6fPk+l/ZT+A+asBiLTTXm6cr7COkH7s\n5YGFVZZNKheux9nyztvoethXOj/Wa2Xdd7OnnGaFxEqkOwN9garieJ+0IeLq\nRxY306i5Ug+i8SqCsWhqGAB7LNKtt2VnKv1SX6cB/2PeJachuCqJUo1MhKmc\nQJpXLI4GZVo5cVl2qVfXB6EFdGWaukt5QRZN6rNLwL4yezsdhHvBhRyr/ZEO\nrp1Ngr8lu38yYn7BodbXujH7pzanNvltub+4SuXx8WwRP6r6dFkimydTsuXZ\nWWjE+bQ+nPiAbAtxBgJhDUJuEhkceKriK59ciYE2Hy8uq5hkitVSFkEukzTD\nFh0wl8C4VOMCaHfwDaBmHsSNQ0Nx7IMfRFwjCI2wdpKeIPywEUsdHKBbIzLD\nO8Q49Ylddivssbg/sbYMTFXj+AeQvQXtUEs6GBqcSGf6wx1sb/PzuFDul1wk\nY1kVSI4ZNWGjgjatarvRFqDI871ko3QYPKWvQdDCd98G6WyUA91lFOxjPb7N\n5F0l+5KRz95vas1AHnGM3XH6GI/qiPUZCxMg6UHjlWBkV/ZlKcWXpXbwcXG5\nytzu\r\n=SjS9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdLknoW46JEAmRAt1kZcDAj1ubl8z6OSW+BiiaODfHXwIhAKNqWtFoMoARlo2FwX23XDLUU0Up20VPRS4W3jlsSaBy"}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.3_1595858521784_0.5576662668874448"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.4":{"name":"railway","version":"2.0.4","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && NODE_ENV=development rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build"},"dependencies":{"chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","ink":"^2.7.1","ink-link":"^1.1.0","ink-select-input":"^3.1.2","ink-text-input":"^3.3.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tslib":"^2.0.0"},"devDependencies":{"@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/ink":"^2.0.3","@types/ink-select-input":"^3.0.0","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^3.9.5"},"gitHead":"2167a55394754f1318d8b6ed0074d4d832773752","description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.4","_nodeVersion":"12.18.2","_npmVersion":"lerna/3.22.1/node@v12.18.2+x64 (linux)","dist":{"integrity":"sha512-LA+hs/M5kgeyhMZdtZtXrtYV3Okjr37yKgLLpXGE9EXQxTSK7eCnRI7DvtVZLzvL0S5KnnVWkHixE3YOqAo6jQ==","shasum":"d6653ad471a53310bb647ed3f27d6cb98e5d5ed2","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.4.tgz","fileCount":45,"unpackedSize":70683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHvGCCRA9TVsSAnZWagAAjRQQAIwS2WbfajHrKpr3245O\nZpIsZmLtxVcVdKuQbbwXnY9YqywBJfkgH4VkiLdexNfcVFyj1UTLxXNbAa1T\n79RrVguZSWNZ0DBX+s3HYLxN4BVV0PpiNYbq/jpEApah1sctaSVM8SyqTkby\nry9LdPe3Lb5FLWCoQdbgrHSluPg50IFu82RUmopNVs83bh+JeRTfCsMe1ArT\nuuKRdZdyo4zKAbpYVB58saN+opmTGWGmfbl0V95crs/hJLk6bT5M+sB6ECaW\nTJj2FYGSEZZSwOQvGq04CgNbpo8anI7oAoTr+S5WKLumY4woqvSToQWFInsg\nlp5CmEEmDNZ9wg/aMrAZgjDrZ3RmslVkG0ZoD0e7h1pxna5vnyhXxJ/UW6FS\n2Wq3DFCOMt6l8jwH60QIIFcaeGwX/wwB+QnRZ3Bz9vc/kSm+a6cZxl0od4yp\n8UjSGZWuWgnGZTD2r9YAhNoG4tJ5m9P9VLM0/7DlzVneqqiSDuhMyWaSy3o6\nAm8QHu/OC0cnhfVMEra+Z6lB3EFkoLrhBU/UcAa85Ml9W0YVfX00yl6VGg+x\nZXek7FKQrmeTr03HS+4F5lb6LPslSfFPoKKOL/PVA7lQJwUZBi5LpGdhDXnd\nVa5cxPaG2O3S1sWI/u+U27CHzZ+bmE9D0nSGS7AEJ2gAsTOejX6Hiq4Dc996\nJmk1\r\n=X075\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzTC3vFZz58SMbcXI4H5mBHfNLKG5cy6Ez8pWq4anm7QIhAMCMszmnRV3ZSqdGy6USCcoWkHNMGHgPUFYMRhIULouw"}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.4_1595863425857_0.5102165819025353"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.5":{"name":"railway","version":"2.0.5","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && NODE_ENV=development rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build"},"dependencies":{"chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","has-yarn":"^2.1.0","ink":"^3.0.0","ink-link":"^1.1.0","ink-select-input":"^4.0.0","ink-text-input":"^4.0.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tslib":"^2.0.0","update-check":"^1.5.4"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/has-yarn":"^1.0.1","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^3.9.5"},"gitHead":"5ba53b44bc164f96a582ea769662f77e07f21b5d","description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.5","_nodeVersion":"12.18.3","_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (linux)","dist":{"integrity":"sha512-9z7ckA51GrNPGnmn4knLlYcHRhYkIwDHG4aLa2LADgkV1Z5g2UOBk4tTJK4qYCnvhperYixkX25O1PwALN6R2Q==","shasum":"8341df28fd1e5284d05f3334fbb2804ac4a32be6","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.5.tgz","fileCount":47,"unpackedSize":78375,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJC3oCRA9TVsSAnZWagAAeW4P/R4Ip5ItnkVphHw8ZMJ9\nnqqBwhCtBYinU7110jZe+tZvv6UoGdzFJD6jmQFJqPsChCHhbwYErj8XFgWY\nGASjePeXDn+6tkAB4931QHbmZXaCiKXwxQfg3/9pRrXFOaMttZo96TXAY/sM\n8M0WCtzHnEgkvYsXZq4Ok16g59/YgRTdldgguLiBaj67pHvQvW85tOJxKToY\nmDvjPx3tcnlj4iSshhzO7rPh/Z4BdF0uXmnrsGfmQxuSdYA1+p9E/JqMyUbS\nVHaW/JZvbM7dzT5UfMIbUlFPo47YcFB4mnTGsCgqIk6RsVl7Ee1VgeyG0fTR\nE0SMClChfefLJET7dHCtxgKPCOWsoYPTsmwyhe0VXYYWc1Lpjuc/bqPQBpGL\n3Xtk8a0OczvZrW0Vhy2fPtmzTacxqfyDGLsPDPL80Nl0YmMx6j+qLuVLu4BI\nhu7F7qw6DjYXLQnPhQ/L1mPImoQqSx+2CAQShTt880mgOxJ0dTlEjUP1ePuR\nUjAJC4yNC70TiZvIdy3lg22k55NjRJnK0K4qphGntWC8UTX6Plr4hCxaa/5Y\nc2AqlTm0b3mmuB5mANVrb22MzUF4PtSPcG0B1wDwNOgKMXOu/oMS1v+GeVq6\n5M0C2p8cGJZTBIlp5yMX85PgpDMkEZSYHrghfKfTZ20ym3f+m+uq3zY/0lsG\nlvo9\r\n=WTHC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBufcog1wDYvWg0KW6eKYR9K/B8b8EgslD3dO0ZRrnGcAiEA0LzuPnMQqNgenVgRBUHO2WXriHUPbPhQH+GG0HdLpmM="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.5_1596206568179_0.41938002815398523"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.6":{"name":"railway","version":"2.0.6","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && NODE_ENV=development rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build"},"dependencies":{"chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","has-yarn":"^2.1.0","ink":"^3.0.0","ink-link":"^1.1.0","ink-select-input":"^4.0.0","ink-text-input":"^4.0.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tslib":"^2.0.0","update-check":"^1.5.4"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/has-yarn":"^1.0.1","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^3.9.5"},"gitHead":"f87d9ba578b161c2819facd2b735d8ad8a5f5819","description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.6","_nodeVersion":"12.18.3","_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (linux)","dist":{"integrity":"sha512-iip3j+RxSyI+dXjeUT9rIVn1znRpBT0u782vjjHHzp2pvbHljHvYKomEDppZ8Q2oXJorCEjosJStBoxKiBK7Mw==","shasum":"81ca32e467a5762d25d7ce018c0554c51f19a357","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.6.tgz","fileCount":51,"unpackedSize":97773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKMKeCRA9TVsSAnZWagAAm4YQAKBu9eOKn4g8bg6+xM3z\n6R+bWrrswskU6TboqgF8Un2iSeTHSIKosagC/c3wzUU5WOm9RNUfU9aHYg6F\nca683qZVCjVV2uQRgoYAreGhSPSQuvZg0Oo94X5Ua/1ST/v/KUl+UnY9V0EN\nfqPOOfmvLLarbS+QphP2RJUWQnQgajQo+NoxR4CDaJboCEGezLIkZ/oUscU6\ngta1jcyQO18Yw2DyiKZ2NrQ+bFxyGNNSLGsdxKeKr8uopSeklDwFsffgGnzh\ntSVUwo8TL1gyee2ScgTaOrzon/jrWXU5w8v+Lkas3jUZ7p3Y7dIllIbPpkJp\n6vDMEtojELb8Xzb9Vm5fpJT2kHDwmw1lq62Wk4DlOCZH0AaypijVWld6jQp2\n7Y6o/rTo3X7Rme650BP5PJSZQmMFpKpPl5Zyt2R9w4ShhyI5s513bOgpgwSM\njCSv8PGWfgQgu54MFgZmy7OUIJQ5uej+6y4vN+rG4K/FOYmhuyyMEj4JFHbz\njjmPBXDXZtA9LgjfstgjuArWTy6RObfRTCzrpr6ltFrFDaxtI/0lzaV1eFWy\n59MEV2QSE8NtsbZ6yk1p0bKly+1FxUpuOu2Jc+wTev+lI7FLxBP9BQKbGNtR\ngdudg6uSbGdAXWK/vrz4Ms3ITDU/osYVFwWfsysHjPA5OzT9zJo65fp2AKdI\n86dl\r\n=H8FC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFZ7UogZPJs9yblBpYiJepRlntQox54Y42fTmqEcpUusAiEA3ir5crGhHEdDsgP0ihiKN2Miu4ue/QC84pW7rIBuI8s="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.6_1596506781976_0.09211701038377074"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.7":{"name":"railway","version":"2.0.7","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && yarn build && rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build"},"dependencies":{"chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","has-yarn":"^2.1.0","ink":"^3.0.0","ink-link":"^1.1.0","ink-select-input":"^4.0.0","ink-text-input":"^4.0.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tslib":"^2.0.0","update-check":"^1.5.4"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/has-yarn":"^1.0.1","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-executable":"^1.6.0","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^3.9.5"},"gitHead":"abac4f6b674de4c48657763be0edb9130edc01ca","description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.7","_nodeVersion":"12.18.3","_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (linux)","dist":{"integrity":"sha512-EuOfk/kullrhp8H9KkBBd6G0ilj6r2GecbnwZ9oqhkDq5FMYTQF9m3emXdz4cjXyB6tUBbL6XJaJZWZK7Q0sKw==","shasum":"264e3f7f1e847776525189656f09604d1d814a5c","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.7.tgz","fileCount":53,"unpackedSize":104174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLA+XCRA9TVsSAnZWagAAUfoP/35qi4ScfGa4BEFQsWza\nitvuttdMb5um7VnwpdGbv5p/p8+8z1jbflf0zyOmiQIOICMH4BTg9KtpalFY\nf4Qb63pnTRW8pYbpKajW4wiXWLTf6wYqf3oIBKEZMdxA/6kv4NpFGU7LJxNZ\nbtCnEcIDXuJS2bsal+Qi4vMqAN+Gjh6vV7G53zLNmZBMamOxN7vKZ+OLoWX0\nCwyBJGCzF9RKcfe3Q/Eo/3eVTeLnhnIzI73OrHdr4sKULmZ0PMja++LWVCnB\n6yRjVgHEBdGTPFZsFOBcCKAqQSRTOIVZgU6HUnD7aCQnoDptU5LRCFu7VOEL\nAQW4kVkDAih/D8Gv+QiGF/6Pp8mkwG6VpJboIJUOvnXqgBax5MR/dTxDQ5Ev\np2fvSvRy5C/ddx+r2S97DBudFq4Sbk15P1kVhgXT4ufDeZK2/H12LO/CB3Pn\ngqGF1stf2O26Gr260hbzrDc+jMqf4c/VCqJmxJFCl0gtHQ7xdGNbk05uZalK\n2oVilbauVk5tPjqwCnjBZupiV+eQaQPhhr3zgn7JhFG0PJSL3eloCrKYfkyi\nOUqr0bbKFMqZ4vhsWngg/gMK/kF1K7z6Jul9a1F9f92BBWpXYJvPw+pTYKGc\nEGcql2Riqgya4nTUBvbRV3CtaHjF1Nnz16zVPUIFrUsEkwKlWOMlfeeFnuRl\nje7W\r\n=vkGA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSihQTf51k4Gv4NaDnzBju1+v2ayXzfuaSCv1hGdb8OgIhANKXUi0ePqYUgV7wMsbCG5dUPcAn91vBnqz7Bjav5dd8"}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.7_1596723095023_0.2637342848480755"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.8":{"name":"railway","version":"2.0.8","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && yarn build && rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build"},"dependencies":{"chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","has-yarn":"^2.1.0","ink":"^3.0.0","ink-link":"^1.1.0","ink-select-input":"^4.0.0","ink-text-input":"^4.0.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tslib":"^2.0.0","update-check":"^1.5.4"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/has-yarn":"^1.0.1","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-executable":"^1.6.0","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^3.9.5"},"gitHead":"6c6deb29dc9d6c336ba5d11d6696ef3a46e442d7","description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.8","_nodeVersion":"12.18.3","_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (linux)","dist":{"integrity":"sha512-RCumSME+tvw2Ncdx9EPP/n+g10846aOUtpTTkiaSahMDaCUlFVT6+jIOizbo9x2mDq9+fz93iIGRkPjn6FPx0w==","shasum":"8aa8eadb3059a5fd336cdc359685b47992110e35","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.8.tgz","fileCount":53,"unpackedSize":104294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLUSXCRA9TVsSAnZWagAAGxUQAIwcFqOtYhjRBKESgl/r\n4F9iIZPY4MIX9yfWKE9S4dIZYu5nKL6ejKY9OdEmpLWxgEkOBiiSUjNs+Z6n\nfm1cXzRx8plP23VpdtDadf+UY5hh75+IR20lthyReLj65yue7a7Twwc9hfcl\n4bbsSWScaALL0vpv6G47KS2BVC4kdqXGI/DlLpZL2r7+B94a2rLLXzEKerka\nFMdC06XtskHfev7RTeP11n5aMNBs4JnTjBcZ1q0A5UAuPS0QBjxcmChCNbkp\n2N388mcplGGtAI4p4AgoxlllxzYXV62w+9FSPTp9cdbK0tf+qITVjXp3YAN7\n4BAjPz4kdcBQIVXWGmliBr43xLqw20lcWlArcqVhXKTqhQeycWf8UFAZ+iHK\nP8P3Q6XwIhN5sIl1YWkop/KQgFJiDeuXU9N1DT70IUtKdOg2wjGjnoQhHVeq\nyGJsmfxb6ffo5URzShsnYstn9qrmpN39IBs9brJgfrO9p9ZOvhHL3+8QWhiP\nc/qgo8MyPy0xmfiSoKJ3mrn130AQtNmFP5vdmI3DMRqNok5TfDgJ906AVP57\nrFvG7siktv8YesZWiZIbIoj3PKXkUrOjDtXlfyPMxg+xPbEmcf6/O/PY+Ajo\nNYI8pX1mZGX4XpyBYCDtBcGrSaZ3uwSRJk5Ilk4T5sEQGKzzxDMEU5W5YhGe\nyfGC\r\n=Xpdv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEI6Qbsm3mdNrsQfVpgRnDMaXXq7sipe2+HlMk5qYfiXAiEAqiaxqp4DPsB8cCqLsU05Zf3GYfWKKUgMlt73o9Cxqxw="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.8_1596802198590_0.3618657414053499"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.9":{"name":"railway","version":"2.0.9","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && yarn build && rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build"},"dependencies":{"chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","has-yarn":"^2.1.0","ink":"^3.0.0","ink-link":"^1.1.0","ink-select-input":"^4.0.0","ink-text-input":"^4.0.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tslib":"^2.0.0","update-check":"^1.5.4"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/has-yarn":"^1.0.1","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-executable":"^1.6.0","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^3.9.5"},"gitHead":"6df455e031c319e3c459842fc1bf33128c8c6b3e","description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.9","_nodeVersion":"12.18.3","_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (linux)","dist":{"integrity":"sha512-J66QaO/s+B5M8EYakahDrXc7zbZN4XyKsk/DJ4xLrmIqvpoQFQIjHxLy/HGPZlXmHNMUagTX8IJCNDMlMTk5EQ==","shasum":"a644038acdb457836c50dec6d57b111c31babe9c","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.9.tgz","fileCount":53,"unpackedSize":104573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLWCYCRA9TVsSAnZWagAA9PYQAIwt7F/KtNWnceV+QC7c\nKLQp8S5MUhB9tI+sFIQfp2yJl3N2fvKqFRwvXPMy3mTy+fWjRBpFiY+ikOLq\nKle1IMnqq5nhuTFxXHxfGAhKmQrtQsvr8iMDrAxGLYPnZ9ymgUGSRhsyCw63\njR58HlSNwn+XGwmAHEzOzDsCG6+WGh8ZcSvdWr32ffSI/dkaY8HHDkOYN/eo\n+ogmPWSbBB1snmavgP8vZ03jPxg3yKCJ81fMjm+R9WWKEVtaFM5BXD8x5lmT\n7ZiuQO/Qx4Jv/n1XRaHbiAvp/7LjhtAHBgPnoROjGQqfh4xjB1euS0Wk1AtN\nXKZnR58Xnn9UUpcsk5IP4BWOgvWiidvbK8qXa68+uUQNb7gz7cxzLCsZfnB3\n3IBLrYlIV3PoNg9AGgNHH2QztNef+q+1vsm3aKBDLmQde6AipTkECfDmJXkO\n8T4a5GdwyU5HbKW4XAkj9ObBeqbOUA6uvO/I+4pd1JRWYhdYyIb2h3rJToSC\npA29Wd4ppnXXWbMVJ/RrwakDcrw0is0UHiIKECY0x3HbUZani7qkVF8UGY4Z\nYqzwN6UJpwy7hQX/eHFjqbQNbEb7rEEKdzEim9S0xr2Gbbpe31ZREbFTMJiZ\nRJo9WcRnQbHtsBjwkV89KqQRj8aG0aceREO/Kyb8ATe3ObhfU7gh3m9u61Yw\n5L2M\r\n=sYVo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDn0bN4p+CUauGvm01vsNzo+apr0DXkp+8DBnTINEu2NwIhAINp2JprH/pJcRwE36ENESA10MEqZb0QXP2dECxqT4Ch"}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.9_1596809368309_0.13829778159976258"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.10":{"name":"railway","version":"2.0.10","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && yarn build && rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build"},"dependencies":{"chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","has-yarn":"^2.1.0","ink":"^3.0.0","ink-link":"^1.1.0","ink-select-input":"^4.0.0","ink-text-input":"^4.0.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tslib":"^2.0.0","update-check":"^1.5.4"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/has-yarn":"^1.0.1","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-executable":"^1.6.0","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^3.9.5"},"gitHead":"5a012fef83398cce1f384499f4cb272ede0bc184","description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.10","_nodeVersion":"12.18.3","_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (linux)","dist":{"integrity":"sha512-+t0gW/niXOFqN//xFjAKd5ONQPHrhhPbGoGsPqunHOautIQXQosgGxqDMI3xnImIuWEiPA/27zhXWIm1TCY8IQ==","shasum":"85d91a95aa9d65867e4660e05b7494f34cdf5671","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.10.tgz","fileCount":53,"unpackedSize":105698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLYCqCRA9TVsSAnZWagAAoMQP/ROGpi4bVDilMe73ajXU\nnZ1S1zA/lvy9CoM+uuW83jjJ3ueT6Graj4imCg7hABPc+5CQabLmcYpaPP7+\nXJPPUt9inUGeS+6AJXDSfuojv7trM8ygJ01ovbr5tM7O0s4DR66TxqJFuUGE\nWf4HHhZfIq7SI7gG1Ti5jWtxmBagRglUw3nRc0R7LLprwW4YO2zW8ItaKP6a\n7gn4Lsz40P33GYKKEzwJRin3BTJ9mmIKsKZX9kSh5PgoLKX7gttTwgaAo6fy\njFVnzcSBW+yDO9LkC6Gbih3KJErHnhrtFWYITjGf+MN3SCAWqUCtiXyBRV7X\na7zXdbLk4E0rLTWa+xT73cQfNoCa4GcRdHC06GurPZRt42ko1ntCgdDrjsCR\nhOC6OOnw+4Wel5xmkkjObiK3X4t7Do7YlCGA/eIoDinhf0RMq1uPpeyOR5i6\nfrWP4u5JHC5Ee4gzkn5RsrZ0dp7vNBofAdGvWFKnRuBNLL5lVrZSAW+U0KHZ\nA0IGYymbq1rxQlN25mDFmAI1vEB20bYDIbpc/+LJOiBhwLV47z6oTcQomWfR\nCv4VFD7NRClNVBFpZlA6WPtRkHXU1rGVFkrFxG10bXVCul5ZRNxLKseKynVb\n/0ndswn7YIVyZuuNMnSEEGy3EcHrYRpUbCvyTwiSdLr4HWiWWZORjVqEQzeb\n22Qn\r\n=74JH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCd3iKvciZBMxypJwUFYM/YlMGCLLHxfHuteqnpTfC+LAIhAJ/zHSx23FpUrLhejhUZ7XOmAyrQ1iqcs5QcmDZbg/mu"}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.10_1596817578183_0.3102792048876244"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.11":{"name":"railway","version":"2.0.11","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && yarn build && rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build"},"dependencies":{"chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","has-yarn":"^2.1.0","ink":"^3.0.0","ink-link":"^1.1.0","ink-select-input":"^4.0.0","ink-text-input":"^4.0.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tslib":"^2.0.0","update-check":"^1.5.4"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/has-yarn":"^1.0.1","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-executable":"^1.6.0","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^3.9.5"},"gitHead":"d4a7da438029f6b201a631ed0945ffe39b8f8a9a","description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.11","_nodeVersion":"12.18.3","_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (linux)","dist":{"integrity":"sha512-UOvp4nc7SbpeL67ORPISSwIPI9NwMRoXSwfFm04Q9PrWs9Qekl32iGSB5sLpI5/QEP1Ipb2t1w5MDFr6lpnh0w==","shasum":"2c57be46bc5fd686c192adbb07e90f4b1dc41364","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.11.tgz","fileCount":53,"unpackedSize":105706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLcIKCRA9TVsSAnZWagAAJHQQAKLFKTuGZtV8R9K6s9X+\nnuhLok1ue76ygytfcGyfTblLgNohcF/qYKiKGNXevBSPMzCRU7uPZnnA+Tnc\nqKFUkW0fU2K3ag4T4Uh/IAzO6DpfUBCu7dvR0pQRjpRqk5YDzukYLPrTMzv/\ndX5YLeOPKzxbN+TT8pPvlOlgmNTvM4ZOcZlt7EuMzfBfTGeAHjhpfCzZFdPd\nVFLWskMUM5DlAyXcUxGGFfNKf5slu8lQus6RfjuEsg9LL/GO1+sunL0Lz4MX\ntNjU0Y1/iPmpvlnB71WRkUIISgyceKHOux5J1IpZFfh8P0VCU+ML2TGSNOa3\nIZX2QFDuOLx6NXn6t5Xh3e2ypWGcOwRD4QaNsQVGitWP+V+KcIzMQJSSO55n\ndWiBVDCvJEXKgvwvmXNSmm7hlvqZzOCUbb48Yten6QIrqLuAjH3HrbLLHX2J\n/5D8RYN63FTyCySU1o6eyqhoP334jTnq5vV0tPhV0MlRQ1G/d9hWXoDNZ5v+\nSNmOI863bmeJGxC+s5zWHGIZjFXROZAKi7dbUMtxGSyLVj99ZQBVSf+djNBU\nJO43YtzrLK2JzapzO36qciF07uR3f+bHnTo1Ehg3kmePXpHJ/P+wV4gnLHYP\nNcSiJPuo1KApgPAn1UrvqbQ5K4A1PfqP7oJh2yPOnBYKkpZqGNZfTSOpThke\ndt77\r\n=IUQT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCn+QZJn+df7rOHzKB02Tp3lVAbRv551+B5ZEhVkGFDFQIgOqFjkTKX25Y9lZhWaSMMmx+G8Oh/ud1m8tp9l6sbVkA="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.11_1596834314267_0.8522465618479123"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.12":{"name":"railway","version":"2.0.12","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && yarn build && rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build"},"dependencies":{"@types/tar":"^4.0.3","chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","has-yarn":"^2.1.0","ink":"^3.0.0","ink-link":"^1.1.0","ink-select-input":"^4.0.0","ink-text-input":"^4.0.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tar":"^6.0.2","tslib":"^2.0.0","update-check":"^1.5.4"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/has-yarn":"^1.0.1","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-executable":"^1.6.0","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^3.9.5"},"gitHead":"08831dd0dc7237ce23a35d14e9d1906b87d901f2","description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.12","_nodeVersion":"12.18.3","_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (linux)","dist":{"integrity":"sha512-xkMTR4RWU269130yv+0H4i6YIUY9h2jJAqJl8Qwr4nwfK5rxtoyVz++oijcQHLt2RRLt7Gvvh+Ner/zwg6J4xg==","shasum":"3fe939542d5cbb702ce4df406e360cfb77cc7fd3","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.12.tgz","fileCount":55,"unpackedSize":112000,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLqTYCRA9TVsSAnZWagAAwLAQAJgfCwqqSeLJafGw1cEE\nvrFK9BTw8AEskp2tPhKIq5ryVIptLnNn5HI/yfcA07DnHDPsBDbvmvHKoXRJ\nWgvSyiUD57PtYcit9t3dnsiF40goOdql5T8DZMeuzV/OD92HmwfAVduWkPnm\n05eChSEhgLw4b+YqqjsVwrGm++pdatvMB49pqYSCFl32OgEAqbO+bin5A8Z/\nz+3irvBimiqaksDUMaAzUaUhYbEynKHREhjbqoNeFI6biFST/wYFDdiRBeun\nPoDk8evZsqTez8JsP0yId2muBxxSC5YMIrC1ogDuWtX2PkACn126ThBsD/Af\n8UAd5p+AciN4mJFwFZfZiguMNWaqwR5vfT/BSzwBCC6CeUVhnDnDPPbe3eau\nmvu/I2AHKIOu7CIDMEINZ37xkDB3K7AE0PwRefJqEn55WEYD5Xf/SdOaHgVo\nqYdJOBxXWj+5PTU4dyjCkT/s2/JePZEmvFzMC44/HD8zw20ya3mI6LTnqz/M\nEV2iC8seH2P+WsPkq0nH9R5IdZbunwif5YV8Qr4eWnhzRizULKDYEm8msxWT\n/MKGMxaMH4e0aqguCnY4OY2tpxWilITdPFrIbOaIYd32fuv+nWYlKWspuHRc\nGHzh88XFMrrp08OGxcC6xwlcT0tliF9gk2Hjb7gGKIQdZ3bDzE0JG9m9m6d+\nVM67\r\n=M9GX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAE+4O1yqXgtjd+pAKOqvk+o/2zFnrtcuoQrCqtq197yAiEAuqSd0j1EX10cVYZW/gpjss8LmAqSsK+I8NfqHhIZP2U="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.12_1596892375874_0.5554743428482931"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.13":{"name":"railway","version":"2.0.13","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && yarn build && rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build"},"dependencies":{"@types/tar":"^4.0.3","chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","has-yarn":"^2.1.0","ink":"^3.0.0","ink-link":"^1.1.0","ink-select-input":"^4.0.0","ink-text-input":"^4.0.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tar":"^6.0.2","tslib":"^2.0.0","update-check":"^1.5.4"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/has-yarn":"^1.0.1","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-executable":"^1.6.0","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^3.9.5"},"gitHead":"968e4b1c6950896092312f03530b655f29f5ba88","description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.13","_nodeVersion":"12.18.3","_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (linux)","dist":{"integrity":"sha512-tYVTazW+3e214+rRXfCReW/tG0syGgOSwVZrX91OK460vW3pbdA/qHobsiJ2FnjYtyUautEO7dpBXYFBIGCeAg==","shasum":"63a2338c92b2ae547b624bd755163d85886e2c52","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.13.tgz","fileCount":55,"unpackedSize":111996,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLqmwCRA9TVsSAnZWagAARqYP/2XX10E001U1EYVwl3/I\nhtD07xKaY0BiyxnLvrMHBJYJTh2hAbKGKAIUAdJoz/PynfRE+LBouINGskHp\nKhJuSVX4j4LmjrFEkzY1M9e8Rt0j6RS6WRm9TY0U6dqj//G3mPvlpXCHNP+7\nIEa9r3hiZHJyXnOT6xCyWEaF34OvGltzwmBAM4u9tU5NYn72/iSeXHZ03rdV\nxVnUQZow84/RoYHaHrHNvltrQ2anRIfdSVGeXvB7yiM2QU3oQpe87CxTwRvj\nuAnbDuvse/2OLZPBaoze5lXGDggZmPe31pwVX0Yy5qn/AQG8kk7SzqIPPGqo\n1ey25SvcAfMYvi9qamVcG7ivmvlYFVVPnbD83NelalyMVyEa2FXdbUt5hWtE\n3mvfjf2Ev37RHnpVVjOd96KquHJkGGrJ8tSGZoQib3i0YEkKsbRPkzikkwiw\nIRMTuHMEl8ADe59fM2BfhNONC1aodwu8vtX8kD6DNd55e3iAzwHL2QIBe27G\nh+XkRc+Jf7xKcAZz5m95filH5NyOFOYRD3D2GMqr+sx0gTJvwDYjAncYcHHH\nWG6/B3HssOXni3eg1iEFr5DNDHboS37JS7ahSDdhPfrQdV6hQahNGblw9BrQ\nMvXI3VRJFF8V+yKimWC/pOGdGA3otxo6kBO5L1O78gxPvGck0RyM+6RPOgwy\nLg3R\r\n=yGbe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6HUd8uiNSJGeBT44ud24ZJ4DgwzctPZSHKB0lMSS1VQIhAMgNss6QC75c2b6wbXL0UlyqXz1FYHff0SD4y8c1aixo"}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.13_1596893616180_0.30376869729832867"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.14":{"name":"railway","version":"2.0.14","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && yarn build && rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build"},"dependencies":{"@types/tar":"^4.0.3","chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","has-yarn":"^2.1.0","ink":"^3.0.0","ink-link":"^1.1.0","ink-select-input":"^4.0.0","ink-text-input":"^4.0.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tar":"^6.0.2","tslib":"^2.0.0","update-check":"^1.5.4"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/has-yarn":"^1.0.1","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-executable":"^1.6.0","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^3.9.5"},"gitHead":"e9fd82146c636cbf4705bfb0dbe3e10aaf204d61","description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.14","_nodeVersion":"12.18.3","_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (linux)","dist":{"integrity":"sha512-899pAvgHn11Wv9oRDlG6Ay33yf2FGJOE10CixxryPxM36uAGU4YaBdXFeJI7juEvv0zvyXoJwdENtIrWdOrFdQ==","shasum":"15ea07b0bb537c29cb2c314bd037c7e2c56a6cb8","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.14.tgz","fileCount":57,"unpackedSize":122307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQclKCRA9TVsSAnZWagAA9CoP/0hBVhJrrwau6oVzPVge\nzbpUI+NDwn6kiiQ4yEmPmbyrfsBQlb/M5z6rRKagCcaz+FbwHGUpqaZxk/TB\n1n360ZLRRC/29d6Evo7xeO8kfu2oOkoZE3i/hK3bo7nq9Wt4AHibeLmtpvvb\neYJUsFvc3rf9wOMhsrDW82nPsSFJUQuyJXJzWMj9RwqyP7offcHqRHYyteXY\n1J3OSFbweMoNfIlFCG3KC3aVWE3X2kl5oTuHFQ0DHpL2IOPmbcKUwdJ+hEMQ\n/o5efJBg7Ev+QIvM+Kqv7G5NkYtckG6Uzv5hL37H1Ewf9wHJy43PDiRou8Ut\ns/OZXQzE3fkd7TADT1/MrWjrsIw6CwG6bqvq18DPWKulBvLE3p9rzU2nlLA6\ndPsnr0DJ86Fop57aM8qs7DbLU/++0XWv4Ap5QAqJjU8lFWBJsnssaOn7axaH\nhHerBKlz4FHzjZ0quHJ2PlAltHFsKxGf/iONuLyHKy1CYqZA3Sua1P16eRJJ\nvTkoAFFArcNvEZCmvh2rONGOSaGNv0Tn61yCP01DORRyXC2MkYqtQTLwAm1m\nfUWuQTIqXFLmGz0AznW0FDp+H5d9gXDKnJBM3QjPG8O+zhcOCLm9UF1abpuW\ned+Fkxjep9M4fkysXg1bPyUCyUJt6UFkVmf9zzpOoVes+rNuNE9ZbU65hVfI\nHgTR\r\n=jxbA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF4CvxAM+0ngHgR97yV/yb+HpfdRL4/CACjk5Ybff6G3AiA+RPbRt9N5WL3HeVgh/O88lN61UQeIuXBUScBmj9f4tQ=="}]},"maintainers":[{"name":"anatoliy","email":"rpm1602@gmail.com"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.14_1598146889782_0.3654818179226875"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.15":{"name":"railway","version":"2.0.15","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && yarn build && rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build","typecheck":"tsc"},"dependencies":{"@types/tar":"^4.0.3","chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","has-yarn":"^2.1.0","ink":"^3.0.0","ink-link":"^1.1.0","ink-select-input":"^4.0.0","ink-text-input":"^4.0.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tar":"^6.0.2","tslib":"^2.0.0","update-check":"^1.5.4"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/has-yarn":"^1.0.1","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-executable":"^1.6.0","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^4.0.2"},"gitHead":"7f432f72c534e2a05f3d4a69736cfff7f8cec20c","description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.15","_nodeVersion":"12.18.3","_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (linux)","dist":{"integrity":"sha512-tDFxnSRQ/BYUkvEaq2lv/ecpcE10z4/CAec77+I8Kt4BaEIOdIQbnZdOkAtLPlCqC3/vU0gX8unBfBIijCMhnw==","shasum":"b2d607b4c9e71b726c27829dacd9b3ba726c669a","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.15.tgz","fileCount":57,"unpackedSize":127806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYAJkCRA9TVsSAnZWagAAvigP/iQfUm7qDJ06GVSh3Jkj\nmtPqVz/EKpSfvRsXXQE/U8GNl573k6KbJdnOy2eUy5D/s1PZHfgsjEHgCPIH\newkYUDGKORT4Lrpuq1fuYBcRu4umPRvhuysM56rztaGFFeu4j/hSnAp00JIN\nBRZzJ57FvHJZkB8av3QY1a+mQEIwbqNvcnp5kkQjQb5/ME8MDk1V8pw5ZmU+\nCT7my79RE6LVsk8/DzAVZ/7TrGF02wfi2nmXuqyRxgATH2NQdjE+a0FGFJNi\n5uqRHHPcQgseA7ivY7c2A3JWboYQ0qnVOy00D/Q6dAPAbq22jVpqWF+RzAYK\nZQ5V675qzfP2RFk+yjyb1OL/lD4zBA3U5lFXHvzb3kqGf5n5zi1OFM3DpRRX\n+bK1Ksq44cGPWgZ8oBUxrompoVYOZ/2+j/V+O+NbF/co2qyPTmEPubGyAOyP\nswctGW/qC5bXyLi2EPTsqHYqItgXVKDZ0EL685CnsxYZOqfrI7x90T3DOSkr\ng4Ni/ng9U19Y+XehMQ6bdek9IcTUBGPOpAa74cXwR+G81eaQuEqF3sm0gVbW\n7THS/WmF8GPUt5m9wQ5Y2eJxGF/fj261zy/cLpkMbumoEiRHIQ+ZQbH1aJe1\nNy0ZGVl5RUcxmOL1WgclBpFIkEfkFpw8PECDTnCAXrfix7wam73ZDdcWy0D6\nojvV\r\n=aIJ/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNfyTo/Ldl90Yc6hHGq64pZIveM+q44TCBMc5vWKGixAIhAJS8ZulHb3N4rL4NcoA3ovo/+O2fg1ihSQba1ERvTgl2"}]},"maintainers":[{"name":"jakerunzer","email":"jakerunzer@gmail.com"},{"name":"jakecooper","email":"Jake@jakecooper.me"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.15_1600127584871_0.4484234372033056"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"0.0.2":{"name":"railway","version":"0.0.2","description":"Develop and deploy code with zero configuration","main":"index.js","author":{"name":"Jake Runzer"},"license":"ISC","scripts":{"postinstall":"go-npm install","preuninstall":"go-npm uninstall"},"goBinary":{"name":"railway","path":"./bin","url":"https://github.com/railwayapp/cli/releases/download/v{{version}}/railway_{{version}}_{{platform}}_{{arch}}.tar.gz"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"dependencies":{"go-npm":"^0.1.9"},"gitHead":"acffe2ec6c2829d0d1edb4fee9fe7d8313a3ad8e","_id":"railway@0.0.2","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-8FuskbQWKgGn50wSXSi8PO8iUyoGexMoxdzH5bEg5UYEavSnNwdJMv2mVjfKkE0wwZzjOKn6nejCFcyHPYkxHQ==","shasum":"a5037431c8944fc9fb36ee863ecc025c984565f8","tarball":"https://registry.npmjs.org/railway/-/railway-0.0.2.tgz","fileCount":2,"unpackedSize":819,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfduhFCRA9TVsSAnZWagAA458QAJJh+5rED6lbxejjz0K2\n9mdXzejwzfrKybke44tYN11j2MeInK38ZO5iwadIAurrg6KkNGmppnMm50hT\nIbHiaICvwEVrz4UKZ+pmSypE0H/P30o7mJ/WwHF8XmYRD7HXWXohugS/mYYT\nTHMQfmRj6yL8t1+aN+NAnN4GJng7tj3mds16Ft8Isn1zZHNBGEJdVq9xzwXz\nXhb5f0a9jbIAxH4JjKjS+/pPpn8cLMuVNypdOrp066by+nzad85Fel6FflFF\ny9DlhcZmcYXnrVuWJxhAoXfP6mqaZ/FCn2E9wql26K7RoiQft1NFsLNtRYcx\nn1ClQuDJbgG2Fo3+Fo0NnlPoxDJLzUmvSmkXpBhAmWJ4MnHXQrdH75OvK2jn\n0xz0642XMdTtpE/PWz4h/tvVUUBPcKLiY+EQ3iiALbAu4zm+4mXxp24+oB3a\nJHvg6xLWAcKPUK4AxZQ5tlW0VFgkurzp1+GP71LeD+HjFZCRqjPFNFq+5fcD\nzBYaoPY0I3Z8/gqzdx1kX6lFJ0uJnK8KJ6DZOtWASNsf3CihHVP157YXvgsG\nPJG5w/sABDyts0NIUpR+I3aqwwvv7fA9y+7aVLSgKgIm1Od7wg4+FqRecPxL\nPvUxVU/JbQyMZjck4Se8oZe4duAG5pPqUXZ3jF/xH9kUWKVRd+ELfFlGrPgt\neSTQ\r\n=sV85\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICAceI/+7XhWJrtdG0U+34PZ4ezVbyQHCLQurHFCF/lAAiAPjweF5yF3NhNHENj4Hnm43BYQdrzxVEi/wzNhNES/wg=="}]},"maintainers":[{"name":"jakerunzer","email":"jakerunzer@gmail.com"},{"name":"jakecooper","email":"Jake@jakecooper.me"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_0.0.2_1601628229002_0.3361700690539291"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.16":{"name":"railway","version":"2.0.16","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && yarn build && rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build","typecheck":"tsc"},"dependencies":{"@types/tar":"^4.0.3","chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","has-yarn":"^2.1.0","ink":"^3.0.0","ink-link":"^1.1.0","ink-select-input":"^4.0.0","ink-text-input":"^4.0.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tar":"^6.0.2","tslib":"^2.0.0","update-check":"^1.5.4"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/has-yarn":"^1.0.1","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-executable":"^1.6.0","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^4.0.2"},"description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.16","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-ViO3hj/6m3KriuXlsEmVqSNdsX8Svi3EmtI0Q/gu4V8eLXcinO/1edDYYNyKqZw6NlU7hlyjkntxEyh9sjb81A==","shasum":"2a617d3a03eafe22920e2eb3a160b503a3a6fa0c","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.16.tgz","fileCount":57,"unpackedSize":127650,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdumFCRA9TVsSAnZWagAAYekP/1SlL31h9y7nZA5/PP96\nC5mu6haAyLEi/J79yGV0DrWuE//juBT4rut3eQB4ZE+UMMrUmqI+qkmPEbUY\nTesQQw2qv0C7qhWmKRiNyVv5VOMboi11ywNO+xeGUx1F8BxYufgw16zBVpaI\nA+jvc7gsiFkVitzCThuv2Q0zqg9GnN085+ALfhQmobn29U03Oyb+ZByFjUor\nKCXBlaQ9ksp5O0QDjgw8oKUlnxP3/K8OLGKBxEx33X/bXZfbXHInKTNtE0/t\nVoIVDQsTJFZR3A0hZdTy4q63imhxP4vB187TlKcjoJJ5Hp4BAjSm7Bl0bk/U\nR1qGo5rEkULfQoquzDIYD0SkRCnQGiqGM0M8flhYWcN7IiHJIzRLURNwobEz\nJ296eFzcWuftEiJ8+sCO+iqvonZ91iQorSjU4AhSouRDJzMzEDE/8Ffqlz8b\nAeagoWkHXfAfRWoWPGgSH5SDiezwp/+lYypYLHbgd26Gu6NWEa1AwSDWAq8A\nHZ2L/gOgMqWaBoug1tauZ2B8kxuPiEnb15XMBsSLurnJ+NalrgJUTKEFqrXU\nqGbzONlb9I8IiPKtLZapAsGPsfo9dx+a5I8IefUPLM7ZXZ6nwBCe0EB7X0Q6\n45KEtteHUlOgiUFH2PW0Kq9/44xflC7ResfNXR+VxUIC2xF6vpdEcykx+NCl\n2MzR\r\n=MiEP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBgu0Q1DRxmoX4ggDE8e+iG94k4wtql1w//W5fzr7ygEAiEA70gDjiERy2brJz+lSjmWOjGHnnHQsvUjF/+t3VKz13c="}]},"maintainers":[{"name":"jakerunzer","email":"jakerunzer@gmail.com"},{"name":"jakecooper","email":"Jake@jakecooper.me"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.16_1601628549504_0.2130510402690624"},"_hasShrinkwrap":false,"deprecated":"Install the Railway CLI from @railway/cli"},"2.0.17":{"name":"railway","version":"2.0.17","main":"dist/index.js","bin":{"railway":"dist/index.js"},"homepage":"https://railway.app/","bugs":{"url":"https://discord.gg/xAm2w6g"},"scripts":{"start":"node dist/index.js","build":"yarn clean && NODE_ENV=production rollup -c rollup.config.ts && chmod +x dist/index.js","watch":"yarn clean && yarn build && rollup -c rollup.config.ts -w","test":"jest","lint":"eslint src --ext .ts,.tsx","clean":"rimraf dist pg/*.js tsconfig.tsbuildinfo","prepublishOnly":"yarn build","typecheck":"tsc"},"dependencies":{"@types/tar":"^4.0.3","chalk":"^4.1.0","cli-spinners":"^2.3.0","get-port":"^5.1.1","has-yarn":"^2.1.0","ink":"^3.0.0","ink-link":"^1.1.0","ink-select-input":"^4.0.0","ink-text-input":"^4.0.0","meow":"^7.0.1","node-fetch":"^2.6.0","open":"^7.0.4","pg":"^8.2.1","react":"^16.13.1","tar":"^6.0.2","tslib":"^2.0.0","update-check":"^1.5.4"},"devDependencies":{"@rollup/plugin-json":"^4.1.0","@types/chalk":"^2.2.0","@types/cli-spinners":"^1.3.0","@types/get-port":"^4.2.0","@types/has-yarn":"^1.0.1","@types/jest":"^26.0.5","@types/meow":"^5.0.0","@types/node-fetch":"^2.5.7","@types/open":"^6.2.1","@types/pg":"^7.14.3","@types/react":"^16.9.35","ink-testing-library":"^2.0.1","jest":"^26.1.0","memfs":"^3.2.0","msw":"^0.19.5","rimraf":"^3.0.2","rollup":"^2.22.2","rollup-plugin-add-shebang":"^0.3.1","rollup-plugin-executable":"^1.6.0","rollup-plugin-typescript2":"^0.27.1","ts-jest":"^26.1.3","typescript":"^4.0.2"},"description":"The core package for [railway.app](railway.app).","_id":"railway@2.0.17","dist":{"shasum":"dd94cf6501d5bf02e4cc3b44fb8b476ec579c68d","integrity":"sha512-QZ2yWD265EKSvq8UHX+mFQergD5gT1h/fsbzx7BF6S7AzdmFZWhfjDTTlfqZ6U1xO0U4T4wpWEbhgD+UyK62tQ==","tarball":"https://registry.npmjs.org/railway/-/railway-2.0.17.tgz","fileCount":65,"unpackedSize":62208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeQINCRA9TVsSAnZWagAAVLsP/0Z8apyL3WYe8hhn53Ns\nXSap96if5hrLC89hq04HCfzNkoay0urElMB7NrDrtJSv8TSOGrpsfES6XpS/\n1oC6XjTlMmU2xtfQju3EmLvc+YZrC4nBVhT8YUEasM2JQV4xX1c8q/h+zNoK\nm0GkKRVWfG2PF0MiG5/EVFaRd5whjBGVq6xgdZUqxgbjKVlrkYKheDoX6MHV\nt0E7oAABxmNxqXSkFPh9kvvHg+QDcSUlf2u//6Qe3RVMDlAwhKJzVWXXbjAt\nq2Pw4/XvCZcEW3SGublwBli8ncopwFAGVHuMBil3nOP4hFFb1nGgC4C0FhwY\nKlUk3Dqo0fYn2f8fogVRZzAGj+hz40YF1mxc0k2NcrUGFUJcl1jiL8Mg9DtY\nzPpQIzrvIoagzuB/lSfGSJD2gMSU8AyalWwK4ayEkGHzsz9MSOxAwwxQpich\nt1ieFFyYSTLycvm/a27w1AJ6j2TwTI0HSNfKYavwkf/GICuyJTA/DUPC/6HU\ncGG1bbLloU+ityDasyPVef3swn8QT7U1gbMjzXlUNP62VMTkj7aVb5hL9SMN\nQ7TW1zqSlQEUTMsKI6/g8i0a5tVMsFM4fD2abGQBNM6n/GYjjoXtvlG+iT3m\n7fIwzuqjk0wfQ4COt3nejNjYjYnei9HznigKMAhBNSrA+2+1d7KL3sQIihgG\nnXJx\r\n=Oybo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEI0WRpjDZZZZ0DRmN2eponawh/S+nbfOYquGIkWPV1DAiAtsA3pV++GEMmpRLF6DUa+FuQpjz292JoxFPF8BjyMUw=="}]},"maintainers":[{"name":"jakerunzer","email":"jakerunzer@gmail.com"},{"name":"jakecooper","email":"Jake@jakecooper.me"}],"_npmUser":{"name":"jakerunzer","email":"jakerunzer@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/railway_2.0.17_1601765901142_0.027293706627848913"},"_hasShrinkwrap":false}},"maintainers":[{"name":"jakerunzer","email":"jakerunzer@gmail.com"},{"name":"jakecooper","email":"Jake@jakecooper.me"}],"time":{"modified":"2022-06-25T10:10:43.042Z","created":"2011-05-13T15:18:40.718Z","0.1.2":"2011-05-13T15:18:41.151Z","0.1.3":"2011-05-17T20:53:04.265Z","0.1.4":"2011-05-20T09:55:55.817Z","0.1.5":"2011-05-27T11:52:30.093Z","0.1.6-9":"2011-06-06T08:26:44.808Z","0.1.6-10":"2011-06-06T10:07:17.945Z","0.1.5-10":"2011-06-06T15:31:40.930Z","0.1.6":"2011-06-07T19:19:50.115Z","0.1.6-1":"2011-06-08T16:24:13.304Z","0.1.6-2":"2011-06-08T19:51:09.268Z","0.1.7pre":"2011-06-09T19:23:00.851Z","0.1.7-4":"2011-06-22T05:13:42.565Z","0.1.7-5":"2011-06-22T05:17:36.632Z","0.1.7-6":"2011-06-29T06:29:54.766Z","0.1.7-7":"2011-07-05T06:41:31.068Z","0.1.7-8":"2011-07-06T06:05:50.900Z","0.1.8":"2011-09-24T19:37:53.516Z","0.2.0":"2011-11-14T15:25:02.828Z","0.2.1":"2011-12-13T21:13:42.826Z","0.2.2":"2011-12-14T21:08:53.569Z","0.2.3":"2011-12-15T08:27:02.349Z","0.2.6":"2012-01-13T19:26:17.416Z","0.2.7":"2012-01-20T18:17:41.152Z","0.2.8":"2012-02-01T18:44:57.299Z","0.2.9":"2012-02-04T15:17:09.921Z","0.2.10":"2012-03-06T20:44:17.038Z","0.2.11":"2012-03-12T07:23:36.946Z","0.2.12":"2012-03-25T11:28:03.266Z","0.2.13":"2012-03-25T15:59:57.875Z","0.2.14":"2012-04-01T09:31:21.378Z","0.2.15":"2012-04-09T22:20:18.331Z","0.2.16":"2012-04-11T15:42:34.961Z","0.2.17-pre":"2012-04-15T21:47:39.348Z","0.2.17-pre2":"2012-05-02T22:17:35.685Z","0.2.17-pre3":"2012-05-22T16:52:19.124Z","0.2.17-pre4":"2012-07-02T13:42:55.697Z","1.0.0":"2012-08-28T09:07:57.267Z","1.0.1":"2012-08-28T09:49:42.526Z","1.0.1-1":"2012-11-03T01:04:02.703Z","0.1.7-pre2":"2011-06-09T19:34:35.609Z","2.0.0":"2020-06-30T00:37:47.169Z","2.0.1":"2020-07-01T13:45:05.038Z","2.0.2":"2020-07-01T17:23:48.179Z","2.0.3":"2020-07-27T14:02:01.939Z","2.0.4":"2020-07-27T15:23:46.016Z","2.0.5":"2020-07-31T14:42:48.275Z","2.0.6":"2020-08-04T02:06:22.229Z","2.0.7":"2020-08-06T14:11:35.219Z","2.0.8":"2020-08-07T12:09:58.740Z","2.0.9":"2020-08-07T14:09:28.436Z","2.0.10":"2020-08-07T16:26:18.416Z","2.0.11":"2020-08-07T21:05:14.410Z","2.0.12":"2020-08-08T13:12:56.022Z","2.0.13":"2020-08-08T13:33:36.471Z","2.0.14":"2020-08-23T01:41:29.929Z","2.0.15":"2020-09-14T23:53:04.994Z","0.0.2":"2020-10-02T08:43:49.111Z","2.0.16":"2020-10-02T08:49:09.638Z","2.0.17":"2020-10-03T22:58:21.284Z"},"users":{"anatoliy":true,"pvorb":true,"m42am":true,"gvishal":true},"readme":"# Railway\n\nThe core package for [railway.app](railway.app).\n\nSee [railway.app/docs](https://railway.app/docs) for documentation.\n\n## Development\n\nIf the CLI is run with `RAILWAY_DEV=true`, it will point to `localhost:3000`\ninstead of `railway.app`. This is useful during development.\n","readmeFilename":"README.md","description":"The core package for [railway.app](railway.app).","homepage":"https://railway.app/","bugs":{"url":"https://discord.gg/xAm2w6g"}}