The web, with simplicity.
- [Luca Guidi] Official support for Ruby: MRI 2.4
- [yjukaku] CLI:
hanami generate modelnow also generates a migration - [Luca Guidi] Generate
config/boot.rbfor new Hanami projects. - [Luca Guidi] Introduced
Hanami.loggeras project logger - [Luca Guidi] Automatic logging of HTTP requests, migrations, and SQL queries
- [Luca Guidi] Introduced
environmentfor env specific settings inconfig/environment.rb
- [Marcello Rocha] Fix Hanami::Mailer loading
- [Kai Kuchenbecker] Serve only existing assets with
Hanami::Static - [Gabriel Gizotti] Ensure inline ENV vars to not be overwritten by
.env.*files - [Adrian Madrid] Ensure new Hanami projects to have the right
jdbcprefix for JRuby - [Luca Guidi] Fixed code reloading for objects under
lib/ - [Semyon Pupkov] Ensure generated mailer to respect the project name under
lib/ - [Semyon Pupkov] Fixed generation of mailer settings for new projects
- [Victor Franco] Fixed CLI subcommands help output
- [Ozawa Sakuro] Don't include
bundleras a dependencyGemfilefor new Hanami projects - [Luca Guidi] Make compatible with Rack 2.0 only
- [Luca Guidi] Removed
loggersettings from Hanami applications - [Luca Guidi] Removed logger for Hanami applications (eg
Web.logger) - [Luca Guidi] Changed mailer syntax in
config/enviroment.rb
- [The Crab] Mark unit tests/specs as pending for generated actions and views
- [Luca Guidi] Rake task
:environmentno longer depends on the removed:preloadtask - [Luca Guidi] Ensure force SSL to use the default port, or the configured one
- [Luca Guidi] Boot the project when other it's started without
hanami server(eg.pumaorrackup)
- [Luca Guidi] Ensure JSON body parser to not eval untrusted input
- [Christophe Philemotte] Introduced
hanami secretto generate and print a new sessions secret
- [Bruz Marzolf] Skip project code preloading when code reloading is enabled
- [Bruz Marzolf] Ensure to generate project in current directory when running
hanami new . - [Pascal Betz] Fix constant lookup within the project namespace
- [Sean Collins] Ensure consistent order of code loading across operating systems
- [Luca Guidi] Ensure to load the project configurations only once
- [Luca Guidi] Fix duplicated Rack middleware in single Hanami application stacks
- [Luca Guidi] Official support for Ruby MRI 2.3+
- [Luca Guidi] Removed support for "application" architecture
- [Luca Guidi] Removed
Hanami::Container.newin favor ofHanami.app - [Luca Guidi] Removed
Hanami::Container.configurein favor ofHanami.configure - [Luca Guidi] Configure model and mailer within
Hanami.configureblock inconfig/environment.rb - [Luca Guidi] Removed
mappingfrom model configuration - [Luca Guidi] Removed
Hanami::Application.preload!in favor ofHanami.boot - [Luca Guidi] Removed experimental code support for
entr(1) - [Luca Guidi & Sean Collins] Renamed assets configuration
digestintofingerprint
- [Luca Guidi] Generate new projects with Subresurce Integrity enabled in production (security).
- [Luca Guidi] Include
X-XSS-Protection: 1; mode=blockin default response headers (security). - [Luca Guidi] Include
X-Content-Type-Options: nosniffin default response headers (security). - [Trung Lê & Neil Matatall] Added support for Content Security Policy 1.1 and 2.0
- [Andrey Deryabin] Experimental code reloading with
entr(1) - [Anton Davydov] Introduced JSON logging formatter for production environment
- [Anton Davydov] Allow to set logging formatters per app and per environment
- [Anton Davydov] Allow to set logging levels per app and per environment
- [Anton Davydov] Application logging now can log to any stream: standard out, file,
IOandStringIOobjects. - [Andrey Deryabin] Allow new projects to be generated with
--templateCLI argument (eg.hanami new bookshelf --template=haml) - [Sean Collins] Add
--versionand-vforhanami versionCLI
- [Josh Bodah] Ensure consistent CLI messages
- [Andrey Morskov] Ensure consistent user experience and messages for generators
- [Luca Guidi] Fixed generators for camel case project names
- [Anton Davydov] Fixed model generator for camel case project names
- [Leonardo Saraiva] Fix
Rakefilegeneration to safely ignore missing RSpec in production - [Sean Collins] When generate an action, append routes to route file (instead of prepend)
- [Sean Collins] When an action is destroyed via CLI, ensure to remove the corresponding route
- [Bernardo Farah] Fix
require_relativepaths for nested generated actions and views unit tests - [Anton Davydov] If database and assets Rake tasks fails, ensure to exit the process with a non-successful code
- [Luca Guidi] remove
Shotgun::Staticin favor ofHanami::Assets::Staticfor development/test andHanami::Staticfor production - [Alexandr Subbotin] Load initializers in alphabetical order
- [Matt McFarland] Fix server side error when CSRF token is not sent
- [Erol Fornoles] Fix route generations for mounted apps
- [Mahesh] Fix destroy action for application architecture
- [Karim Tarek & akhramov] Reference rendering errors in Rack env's
rack.exceptionvariable. This enables compatibility with exception reporting SaaS. - [Luca Guidi] Detect assets dependencies changes in development (Sass/SCSS)
- [Luca Guidi & Lucas Amorim] Make model generator not dependendent on the current directory name, but to the project name stored in
.hanamirc
– [Luca Guidi] Drop support for Ruby 2.0 and 2.1
- [Trung Lê] Database env var is now
DATABASE_URL(without the project name prefix likeBOOKSHELF_DATABASE_URL - [Trung Lê]
lib/config/mapping.rbis no longer generated for new projects and no longer loaded. - [Anton Davydov] New generated projects will depend (in their
Gemfile) onhanamitiny version (~> 0.8') instead of patch version (0.8.0) - [Andrey Deryabin]
dotenvis now a soft dependency that will be added to theGemfile:developmentand:testgroups for new generated projects. - [Andrey Deryabin]
shotgunis now a soft dependency that will be added to theGemfile:developmentgroup for new generated projects. - [Anton Davydov] New logo in welcome page
- [Ozawa Sakuro] Remove
require 'rubygems'from generated code (projects, apps, routes, etc..) - [Eric Freese] Disable Ruby warnings in generated
Rakefilefor Minitest/RSpec tasks - [Luca Guidi] Allow views to render any HTTP status code. In actions use
halt(422)for default status page orself.status = 422for view rendering.
- [Pascal Betz] Use
Shotgun::Staticto serve static files in development mode and avoid to reload the env
- [Alfonso Uceda Pompa] Fixed routing issue when static assets server tried to hijiack paths that are matching directories in public directory
- [Anton Davydov] Fixed routing issue when static assets server tried to hijiack requests belonging to dynamic endpoints
- [Anatolii Didukh] Ensure to fallback to default engine for
hanami console
- [Luca Guidi] Renamed the project
- [Anton Davydov] Show the current app name in Welcome page (eg.
/adminshows instructions on how to generate an action forAdminapp) - [Anton Davydov] Fix project creation when name contains dashes (eg.
"awesome-project" => "AwesomeProject") - [Anton Davydov] Ensure to add assets related entries to
.gitignorewhen a project is generated with the--databaseflag - [deepj] Avoid blank lines in generated
Gemfile - [trexnix] Fix for
lotus destroy app: it doesn't cause a syntax error inconfig/application.rbanymore - [Serg Ikonnikov & Trung Lê] Ensure console to use the bundled engine
- [Luca Guidi] Introduced configurable assets compressors
- [Luca Guidi] Introduced "CDN mode" in order to serve static assets via Content Distribution Networks
- [Luca Guidi] Introduced "Digest mode" in production in order to generate and serve assets with checksum suffix
- [Luca Guidi] Introduced
lotus assets precompilecommand to precompile, minify and append checksum suffix to static assets - [Luca Guidi] Send
Content-CacheHTTP header when serving static assets in production mode - [Luca Guidi] Support new env var
SERVE_STATIC_ASSETS="true"in order to serve static assets for the entire project - [Luca Guidi] Generate new applications by including
Web::Assets::Helpersinview.prepareblock - [Luca Guidi] Introduced new Rake tasks
:preloadand:environment - [Luca Guidi] Introduced new Rake tasks
db:migrateandassets:precompilefor Rails/Heroku compatibility - [Tadeu Valentt & Lucas Allan Amorin] Added
lotus destroycommand for apps, models, actions, migrations and mailers - [Lucas Allan Amorim] Custom initializers (
apps/web/config/initializers) they are ran when the project is loaded and about to start - [Trung Lê] Generate mailer templates directory for new projects (eg.
lib/bookshelf/mailers/templates) - [Tadeu Valentt] Alias
--databaseas-dforlotus new - [Tadeu Valentt] Alias
--archas-aforlotus new - [Sean Collins] Let
lotus generate actionto guess HTTP method (--methodarg) according to RESTful conventions - [Gonzalo Rodríguez-Baltanás Díaz] Generate new applications with default favicon
- [Neil Matatall] Use "secure compare" for CSRF tokens in order to prevent timing attacks
- [Bernardo Farah] Fix support for chunked response body (via
Rack::Chunked::Body) - [Lucas Allan Amorim] Add
bundleras a runtime dependency - [Lucas Allan Amorim] Ensure to load properly Bundler dependencies when starting the application
- [Luca Guidi] Ensure sessions to be always available for other middleware in Rack stack of single applications
- [Ken Gullaksen] Ensure to specify
LOTUS_PORTenv var from.env - [Andrey Deryabin] Fix
lotus new .and prevent to generate the project in a subdirectory of current one - [Jason Charnes] Validate entity name for model generator
- [Caius Durling] Fixed generator for nested actions (eg.
lotus generate action web domains/certs#index) - [Tadeu Valentt] Prevent to generate migrations with the same name
- [Luca Guidi] Ensure RSpec examples to be generated with
RSpec.describeinstead of onlydescribe - [Andrey Deryabin] Avoid
lotuscommand to generate unnecessary.lotusrcfiles - [Jason Charnes] Convert camel case application name into snake case when generating actions (eg.
BeautifulBlossomstobeautiful_blossoms) - [Alfonso Uceda Pompa] Convert dasherized names into underscored names when generating projects (eg.
awesome-projecttoawesome_project)
- [Sean Collins] Welcome page shows current year in copyright notes
- [Luca Guidi] Add
/public/assets*to.gitignoreof new projects - [Luca Guidi] Removed support for
default_formatin favor ofdefault_request_format - [Luca Guidi] Removed support for
apps/web/publicin favor ofapps/web/assetsas assets sources for applications - [Luca Guidi] Removed support for
serve_assetsfor single applications in order to global static assets server enabled viaSERVE_STATIC_ASSETSenv var - [Luca Guidi]
assetsconfiguration inapps/web/application.rbnow accepts a block to configure sources and other settings
- [Ines Coelho & Rosa Faria] Introduced mailers support
- [Theo Felippe] Added configuration entries:
#default_request_formatanddefault_response_format - [Rodrigo Panachi] Introduced
loggerconfiguration for applications, to be used like this:Web::Logger.debug - [Ben Lovell] Simpler and less verbose RSpec tests
- [Pascal Betz] Introduced
--methodCLI argument for action generator as a way to specify the HTTP verb
- [Luca Guidi] Handle conflicts between directories with the same name while serving static assets
- [Derk-Jan Karrenbeld] Include default value
font-src: selffor CSP HTTP header - [Cam Huynh] Make CLI arguments immutable for
Lotus::Environment - [Andrii Ponomarov] Disable welcome page in test environment
- [Alfonso Uceda Pompa] Print error message and exit when no name is provided to model generator
- [Theo Felippe] Deprecated
#default_formatin favor of:#default_request_format
- [Trung Lê] Alias
--databaseas--dbforlotus new
- [Alfonso Uceda Pompa] Ensure to load correctly apps in
lotus console - [Alfonso Uceda Pompa] Ensure to not duplicate prefix for Container mounted apps (eg
/admin/admin/dashboard) - [Alfonso Uceda Pompa] Ensure generator for "application" architecture to generate session secret
- [Alfonso Uceda Pompa & Trung Lê & Hiếu Nguyễn] Exit unsuccessfully when
lotus generate modeldoesn't receive a mandatory name for model - [Miguel Molina] Exit unsuccessfully when
lotus new --databasereceives an unknown value - [Luca Guidi] Ensure to prepend sessions middleware, so other Rack components can have access to HTTP session
- [Luca Guidi] Database migrations and new CLI commands for database operations
- [Luca Guidi] Cross Site Request Forgery (CSRF) protection
- [Hiếu Nguyễn & Luca Guidi] Application Architecture
- [Alfonso Uceda Pompa] Force SSL for applications
- [Luca Guidi] Introduced
--urlCLI argument for action generator - [Luca Guidi] Added
rendered"let" variable for new generated tests for views
- [Alfonso Uceda Pompa] Fix generated routes for Container applications mounted on a path different from
/. - [Luca Guidi] Reading
.lotusrcpollutesENVwith unwanted variables. - [Alfonso Uceda Pompa] Added sqlite extension to SQLite/SQLite3 database URL.
- [Luca Guidi]
.env,.env.developmentand.env.testare generated and expected to be placed at the root of the project. - [Luca Guidi] Remove database mapping from generated apps.
- [Trung Lê & Luca Guidi] Remove default generated from new apps.
- [Luca Guidi] New projects should depend on
lotus-model ~> 0.4
- [Alfonso Uceda Pompa] Automatic secure cookies if the current connection is using HTTPS.
- [Alfonso Uceda Pompa] Routing helpers for actions (via
#routes). - [My Mai] Introduced
Lotus.root. It returns the top level directory of the project.
- [Ngọc Nguyễn] Model generator should use new RSpec syntax.
- [Ngọc Nguyễn] Model generator must respect file name conventions for Ruby.
- [Ngọc Nguyễn] Action generator must respect file name conventions for Ruby.
- [Alfonso Uceda Pompa] Action generator must raise error if name isn't provided.
- [Luca Guidi] Container generator for RSpec let the application to be preloaded (discard
config.before(:suite))
- [Hiếu Nguyễn] Introduced application generator (eg.
bundle exec lotus generate app admincreatesapps/admin). - [Ngọc Nguyễn] Introduced model generator (eg.
bundle exec lotus generate model usercreates entity, repository and test files). - [Ngọc Nguyễn] Introduced
Lotus.env,Lotus.env?for current environment introspection (eg.Lotus.env?(:test)orLotus.env?(:staging, :production)) - [Miguel Molina] Skip view creation when an action is generated via
--skip-viewCLI arg.
- [Luca Guidi] Ensure routes to be loaded for unit tests
- [Luca Guidi] Introduced action generator. Eg.
bundle exec lotus generate action web dashboard#index - [Alfonso Uceda Pompa] Allow to specify default coookies options in application configuration. Eg.
cookies true, { domain: 'lotusrb.org' } - [Tom Kadwill] Include
Lotus::Helpersin views. - [Linus Pettersson] Allow to specify
--databaseCLI option when generate a new project. Eg.lotus new bookshelf --database=postgresql - [Linus Pettersson] Initialize a Git repository when generating a new project
- [Alfonso Uceda Pompa] Produce
.lotusrcwhen generating a new project - [Alfonso Uceda Pompa] Security HTTP headers.
X-Frame-OptionsandContent-Security-Policyare now enabled by default. - [Linus Pettersson] Database console. Run with
bundle exec lotus db console - [Luca Guidi] Dynamic finders for relative and absolute routes. It implements method missing:
Web::Routes.home_pathwill resolve toWeb::Routes.path(:home).
– [Alfonso Uceda Pompa] Cookies will send HttpOnly by default. This is for security reasons.
- [Jan Lelis] Enable
templatesconfiguration for new generated apps - [Mark Connell] Change SQLite file extension from
.dbto.sqlite3
- [Huy Đỗ] Introduced
Lotus::Logger - [Jimmy Zhang]
lotus newaccepts a--pathargument - [Jimmy Zhang] Project generator for the current directory (
lotus new .). This is useful to provide a web deliverable for existing Ruby gems. - [Trung Lê] Add example mapping file for project generator:
lib/config/mapping.rb - [Hiếu Nguyễn] RSpec support for project generator:
--test=rspecor--test=minitest(default)
- [Luca Guidi]
lotus versionto previxv(egv0.2.1) - [Rob Yurkowski] Ensure project name doesn't contain special or forbidden characters
- [Luca Guidi] Ensure all the applications are loaded in console
- [Trung Lê] Container architecture: preload only
lib/<projectname>/**/*.rb - [Hiếu Nguyễn] Fixed
lotus newto print usage when project name isn't provided
- [Luca Guidi] Introduced
lotus newas a command to generate projects. It supports "container" architecture for now. - [Luca Guidi] Show a welcome page when one mounted Lotus application doesn't have routes
- [Luca Guidi] Introduced
Lotus::Application.preload!to preload all the Lotus applications in a given Ruby process. (BulkLotus::Application.load!) - [Trung Lê] Allow browsers to fake non
GET/POSTrequests viaRack::MethodOverride - [Josue Abreu] Allow to define body parses for non
GETHTTP requests (body_parsersconfiguration) - [Alfonso Uceda Pompa] Allow to toggle static assets serving (
serve_assetsconfiguration) - [Alfonso Uceda Pompa] Allow to serve assets from multiple sources (
assetsconfiguration) - [Luca Guidi] Allow to configure
ENVvars with per environment.envfiles - [Alfonso Uceda Pompa] Introduced
lotus routescommand - [Luca Guidi] Allow to configure low level settings for MVC frameworks (
model,viewandcontrollerconfiguration) - [Luca Guidi] Introduced
Lotus::Container - [Trung Lê] Include
Lotus::Presenteras part of the duplicated modules - [Trung Lê] Include
Lotus::EntityandLotus::Repositoryas part of the duplicated modules - [Luca Guidi] Introduced code reloading for
lotus server - [Trung Lê] Allow to configure database adapter (
adapterconfiguration) - [Luca Guidi & Trung Lê] Allow to configure database mapping (
mappingconfiguration) - [Piotr Kurek] Introduced custom templates for non successful responses
- [Luca Guidi] Allow to configure exceptions handling (
handle_exceptionsconfiguration) - [Michal Muskala] Allow to configure sessions (
sessionsconfiguration) - [Josue Abreu] Allow to configure cookies (
cookiesconfiguration) - [Piotr Kurek] Allow to yield multiple configurations per application, according to the current environment
- [David Celis] Allow to configure Rack middleware stack (
middlewareconfiguration) - [David Celis] Introduced
lotus consolecommand. It runs the REPL configured inGemfile(eg. pry or ripl). Defaults to IRb. - [Luca Guidi] Introduced
Lotus::Environmentwhich holds the informations about the current environment, and CLI arguments - [Luca Guidi] Introduced
Lotus::Application.load!to load and configure an application without requiring user defined code (controllers, views, etc.) - [Leonard Garvey] Introduced
lotus servercommand. It runs the application with the Rack server declared inGemfile(eg. puma, thin, unicorn). It defaults toWEBRick. - [Luca Guidi] Official support for MRI 2.1 and 2.2
- [Alfonso Uceda Pompa] Changed semantic of
assetsconfiguration. Now it's only used to set the sources for the assets. Static serving assets has now a new configuration:serve_assets.
- [Luca Guidi] Ensure
HEADrequests return empty body
- [Luca Guidi] Allow to run multiple Lotus applications in the same Ruby process (framework duplication)
- [Luca Guidi] Introduced
Lotus::Routesas factory to generate application URLs - [Luca Guidi] Allow to configure scheme, host and port (
scheme,hostandportconfiguration) - [Luca Guidi] Allow to configure a layout to use for all the views of an application (
layoutconfiguration) - [Luca Guidi] Allow to configure routes (
routesconfiguration) - [Luca Guidi] Allow to configure several load paths for Ruby source files (
load_pathsconfiguration) - [Luca Guidi] Allow to serve static files (
assetsconfiguration) - [Luca Guidi] Render default pages for non successful responses (eg
404or500) - [Luca Guidi] Allow to configure the root of an application (
rootconfiguration) - [Luca Guidi] Introduced
Lotus::Configuration - [Luca Guidi] Introduced
Lotus::Application - [Luca Guidi] Official support for MRI 2.0