FEATURES.md
app/. Slices are now optional.app/ is loaded into the appslices/[slice_name]/ is loaded into the corresponding sliceMyApp::Deps or MySlice::Deps mixin for auto-registering dependencies from the app or a sliceHamami::Action classes supporting the Deps mixin; add your behavior to #handle(request, response)config.format and config.formats.env files (see: https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use)Hanami::Middleware::BodyParser Rack middlewarereply_to in mailershanami-clihanami-clihanami-ujs gem)hanami-webconsole gem)hanami commands (Hanami::CLI.after("db migrate", MyCallback.new) or Hanami::CLI.after("db migrate") { ... })Hanami.configure { middleware.use MyRackMiddleware })Hanami.plugin { middleware.use AnotherRackMiddleware })belongs_to)has_one)has_many :through)hanami generate webpack):plugins group in Gemfilehanami db rollback to rollback database migrations:schema (default), :strict, :weak, and :permissiveHanami.loggerHANAMI_APPS=web env varAction#unsafe_send_file to send files outside of the public directoryhanami generate model now also generates a migrationHanami.loggerhanami secret to generate and print a new session secret for a single Hanami appi18n gem)X-Content-Type-Options and X-XSS-Protection in default response headersmulti_json gem)#local for views, layouts and templates to safely access locals by avoiding nil valuesdatalist form helperentr(1)hanami new can be used with --template argument to generate a new project with (erb/haml/slim) templatesjavascriptstylesheetfaviconimagevideoaudioasset_pathasset_urllotus-jquery)lotus assets command precompile: preprocess, minify and append checksum suffixlotus destroy destroy apps, models, actions, migrations and mailersapps/web/config/initializers):preload and :environmentlotus generate mailerlotus db commands: create, drop, prepare, migrate, version, apply.Lotus.root returns top level directory of the project.lotus generate app admin creates a new application (apps/admin).lotus generate model user. It generates entity, repository and related unit test files.Lotus.env and Lotus.env? for current environment introspection (eg. Lotus.env?(:test) or Lotus.env?(:staging, :production))Lotus::Entity::DirtyTracking)lotus generate action web dashboard#index. It generates an action, a view, a template, a route and related unit test files.lotus db console. It starts a database REPL.html.div { p "Hello World" })routes.home_path).lotus new supports --database (Eg. lotus new bookshelf --database=postgresql).HttpOnly by default.X-Frame-Options and Content-Security-Policy HTTP headers for new generated applications.params.get('address.city')).lotus new . to generate a Lotus project for an existing code base (Eg. a gem that needs a web UI).lotus new supports --path (for destination directory), --test (to generate Minitest or RSpec boilerplate).bundle exec rake runs the entire test suite of an application).404.html.erb)..env files for each Lotus environment.lotus routes. It prints all the routes available for all the applications.lotus new. It generates a new application which can run multiple Lotus applications (Container architecture).lotus console. It starts a Ruby REPL. It supports IRB (default), Pry and Ripl.lotus server. It starts a web server that supports code reloading. It supports all the Rack web servers (default: WEBRick).Cache-Control, Last-Modified, ETAG, Conditional GET, expires)#render override in viewsself.body = "Hello")