Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 02:04
    timriley commented #392
  • 02:04
    timriley synchronize #392
  • 02:04

    timriley on use-class-level-settings

    Add memory profile script (compare)

  • 02:04
    timriley edited #392
  • 01:50
    timriley edited #392
  • 00:54
    timriley edited #392
  • 00:53
    timriley synchronize #392
  • 00:53

    timriley on use-class-level-settings

    Remove name Convert config instance to clas… Convert callbacks from class at… and 2 more (compare)

  • 00:33
    timriley edited #392
  • 00:33
    timriley edited #392
  • 00:29
    timriley edited #392
  • 00:27
    timriley edited #392
  • 00:27
    timriley edited #392
  • 00:24
    timriley ready_for_review #392
  • 00:24
    timriley edited #392
  • 00:23
    timriley review_requested #392
  • 00:23
    timriley review_requested #392
  • 00:23
    timriley edited #392
  • 00:18
    timriley synchronize #392
  • 00:18

    timriley on use-class-level-settings

    Got the cookies_spec to pass. W… Convert callbacks from class at… Slight optimisation for default… and 21 more (compare)

Armin
@wuarmin
@alex-lairan Hanami still recommends the functional service object approach, right?
David Silva
@Davidslv
Hello all, I never have used hanami before but today is the day I'm giving it a try. Right now I only have one question: is it possible to start a new project without having mailers added by default? Or should I just delete code, folders and files (is it ok to do that?)
I was hoping I could just do it through the new command like I did with the rest of the options: hanami new pistachio --test=rspec --database=postgres --template=erb
Seb Wilgosz
@swilgosz
@Davidslv If you are trying it for the first time, I would suggest to try Hanami 2 app template. We have view helpers and cli generators missong yet though.
Lairan
@alex-lairan
@wuarmin rich domain does not mean no functional
it means the domain can handle itself without app (controller) and infra (repo/relations)
So thank this you can unit test all your domain without any mock db
Armin
@wuarmin
@alex-lairan rich domain model means that the models contain the logic, right? Anemic model domain means that the models are only data holders that are changed by e.g. service objects. I like the Anemic model domain approach: The side effects happen in the service-objects and the domain can handle itself too. The logic is in the service-objects (synonym of interactor) and the models are passed as parameters. A controller just calls the service-object, e.g. UpdateUser.new.call(user). With this approach you can also unit-test the domain without mocking the db.
Lairan
@alex-lairan

rich domain model means that the models contain the logic

Not in a functional way, you have your data and the module logic is the "owner" of this data.

That is how the rich domain is represented in functional.

Hanami allows us to design our code, takes all the advantages you can.
That's a big step comparatively of Rails that forces us in a MVC + RailswayTM

zhando
@zhando
I'm wandering back into ruby (and looking hard at elixir) after a very long absence. I remember reading a few articles back then that outlined a "better" approach to programming for the web than MVC.. I remember reading that and thinking wow.. they're on to something there.. something that was a lot different than rails but more natural to what the web actually is.. and therefore more performant.. I remember that led me to dry-rb and hanami.. So I guess I'm looking for those type of articles or blog posts again to refresh my memory.. Can anyone point to anything? Maybe this was 2016 or 2017..
zhando
@zhando
I believe the articles or blog posts back then may have mentioned roda as part of this newer approach..
Sean Collins
@cllns
@zhando Perhaps "Railway oriented programming"? Or "Hexagonal Architecture" (though the whole point of that is that it's not web specific)
Damian C. Rossney
@dcr8898_gitlab
@zhando Here's a bunch of links for you! ;-) To start with, taking a bird's eye view of architecture, you might want to read about Hexagonal Architecture (original article by Alistair Cockburn is currently available from the Internet Archive or Wikipedia); or Onion Architecture; but similar ideas are laid out most clearly by Robert C. Martin in his presentations on Clean Architecture (article and excellent talk--you can find other versions of this talk).
Damian C. Rossney
@dcr8898_gitlab
@zhando More specifically, I think you were probably referring to the posts by Tim Riley, now a Hanami and Dry-rb core team member. I would try to read everything he has written, along with anything by Piot Solnica. Here is an article by Tim Riley (possibly the one you are thinking of) and a talk. Here's a dose of Piotr Solnica, but you can read a lot more there. Here's a recent talk he did on Hanami. Obviously, you should seek out talks and articles by Luca Guidi as well.
@zhando It seems clear that Hanami was influenced by Hexagonal/Clean Architecture, both in its approach and the terms it uses (interactors, entities, gateways). Not that these terms are unique, but they are used in Hanami in a way that is consistent with the ideas brought together by Robert C. Martin in his material (he does not claim to be the creator of any of these ideas, but distilled them from several sources to propose a general approach). Good luck!
zhando
@zhando
Thanks everyone! Excellent..
zhando
@zhando
And the Tim Riley articles had to be some of what I was reading back then. Thanks again.
Sebastjan Hribar
@sebastjan-hribar
Hi, we're still having issues with assets. In my dev environment everything works fine. When I deploy (still on my dev laptop) the app with Docker and using Hanami for serving static assets I get this in the console: Failed to load resource: the server responded with a status of 404 (Not Found) for a lot of assets. However, looking in the public\assetsfolder the different app folders have those assets that are reported missing.
I precompile in my docker-compose setup.
Could anyone help with this?
HotCoffeMug
@HotCoffeMug
hi, how can i switch from sinatra to hanami?
4 replies
Kris Leech
@krisleech
Hey, Our current codebase uses Rails, and would love to consider Hanami for a new product. I see version 2 is in alpha. I was wondering if there is any feeling as to when we might see a 2.x release, fully appreciating this is an open source project? Otherwise does anyone have any idea what a v1 -> v2 upgrade might look like if we where to go for v1 now?
4 replies
Seb Wilgosz
@swilgosz
@krisleech I strongly recommend to not start with Hanami 1x at this point. Next release of Hanami 2 should be beta already and we plan to upgrade our apps near the end of the year, but the effort is quite big, comparable to early major rails upgrades. I am personally waiting for first beta version to start my side project. Hope that helps!
Seb Wilgosz
@swilgosz
Hi, I am looking for some talk topic suggestions, wondering if there is anything you'd be interested in listening about (will be ecorded and published) https://twitter.com/sebwilgosz/status/1545052121942241286?s=20&t=OfQZVIhjxlrkdtdjPXEBRA
Luca Guidi
@jodosha
Armin
@wuarmin
Hey!
in the vacuum between Hanami 1.3 and Hanami 2, I implemented some API-only projects with hanami-api, dry-system and rom-rb. I'm very happy with it. I read that hanami-api may be dropped. It would be a shame for me if hanami-api were to be dropped. What should I do? I don't necessarily want to migrate these projects to Hanami 2, but they should evolve. What would you advise me?
Thanks a lot!
best regards
2 replies
Armin
@wuarmin
What are the pros and cons of using hanami router standalone vs hanami-api?
Pat Allan
@pat
Hi folks - just had dependabot open a PR to upgrade a project from alpha 8 to beta 1 🎉 … but, hanami db commands no longer seem to be present. Are they no longer available by default, and is there something I need to do to fix that?
7 replies
Marwan Rabbâa
@waghanza
Hi @jodosha,
Any time to give t the-benchmarker/web-frameworks#5234 ?
3 replies
Sebastjan Hribar
@sebastjan-hribar

Hi, we're still having issues with assets. In my dev environment everything works fine. When I deploy (still on my dev laptop) the app with Docker and using Hanami for serving static assets I get this in the console: Failed to load resource: the server responded with a status of 404 (Not Found) for a lot of assets. However, looking in the public\assetsfolder the different app folders have those assets that are reported missing.

I haven't gotten any further with this. For example, one of the assets not found when running in Docker is this one: http://localhost:8091/assets/sentinel/w3-1ac375ab06574a481efcf0b7fed82b4c.css. However, when I inspect the folder content I find it: /usr/src/app/public/assets/sentinel/w3-1ac375ab06574a481efcf0b7fed82b4c.css. What am I missing?

Sebastjan Hribar
@sebastjan-hribar
Also, I have the docker-compose run the hanami assets precompilecommand so everything is setup as described here.
And this happens for every app in the project. No assets are loaded/found.
Sebastjan Hribar
@sebastjan-hribar
There was an issue with the image. A clean setup solved it.
Sebastjan Hribar
@sebastjan-hribar
An additional note on assets: the favicon icon with fingerprint is not found/loaded for the web app. Even though it is in the required location. This one I can't debug.
Also, we're using webfonts and data tables which require some files to be in their respective folders on the public/assets level. We use command in the docker-compose to copy this with deploy.
Panagiotis Atmatzidis
@atmosx
Hello, I'm considering hanami for a side-project. I'm completely new to the project and it's been a long time since I spent time with rails or sinatra . Should I go with v1.3 or 2.x even though it's beta? Sounds like 2.x brings lots of nice features.
6 replies
Hannes Elvemyr
@ehannes

I just upgraded our Hanami application from alpha8 to beta1. The project was setup using the Hanami 2 template. We now get this error when running rspec:

$ bundle exec rake

An error occurred while loading spec_helper.
Failure/Error: require "hanami/prepare"

NoMethodError:
  undefined method `source_dirs' for #<Hanami::Configuration:0x000000010636bad0 @config=#<Dry::Configurable::Config ... (see full stack trace in thread)
# ./config/app.rb:13:in `<class:App>'
# ./config/app.rb:6:in `<module:MyApp>'
# ./config/app.rb:5:in `<top (required)>'
# ./spec/spec_helper.rb:6:in `require'
# ./spec/spec_helper.rb:6:in `<top (required)>'

Anyone here knowing anything about this source_dirs, has it been renamed? I can't find anything in the Hanami changelog about this. This is my config/app.rb:

# frozen_string_literal: true

require "hanami"

module MyApp
  class App < Hanami::App
    config.sessions = :cookie, {
      key: "my-app.session",
      secret: settings.session_secret,
      expire_after: 60 * 60 * 24 * 365 # 1 year
    }

    config.source_dirs.component_dirs.add "serializers" # <--- crashes here
  end
end

This code worked in Hanami alpha8.

5 replies
R Gibim
@Drowze

Hey guys :wave:
Firstly, thank so much for hanami! I love the project :smile:

I'm currently working with a client (using hanami 1.3) on building a gem that adds a rack middleware which needs the current request path (with path variables names). Sorry if that wasn't clear but for example:
Considering a request to /users/5/posts/1, the rack middleware needs to know that this request was to the path /users/:user_id/:id

That said, I tried to look a bit the documentation for hanami-router and found there's Web.routes.recognize(env) from which I can get the path variables:

route = Web.routes.recognize(env)
route.params # => { :user_id => 5, :id => 1 }
route.path # => '/users/5/posts/1'

..but the path doesn't include the variable names :/ i'm looking for a reliable way to get /users/:user_id/:id. Can anyone help me achieving that?

1 reply
Sebastjan Hribar
@sebastjan-hribar
Hey, joining the 2.0 questions, how difficult will it be to migrate from 1.3 to 2.0? I know it doesn't make much sense asking this, but we're so involved with our project running on 1.3 that I haven't had a chance yet to get into 2.0. Hence, we might have to use 1.3 for a while. Any thoughts on this?
6 replies
R Gibim
@Drowze

Hey guys :wave: another 1.3.x question incoming!

On a fresh project:

# hanami 1.3.x
hanami new hanami_dummy
cd hanami_dummy
hanami generate action web users#index

when visiting /users, I left a binding.irb and checked the rack env via the @_env variable, where I see:

{
  # ...
  "PATH_INFO"=>"",
  "SCRIPT_NAME"=>"/users"
}

I don't understand this! Shouldn't it be the opposite? Aren't they swapped?? According to the rack spec:

SCRIPT_NAME
    The initial portion of the request URL's “path” that corresponds to the application object, so that the application knows its virtual “location”. This may be an empty string, if the application corresponds to the “root” of the server.

PATH_INFO
    The remainder of the request URL's “path”, designating the virtual “location” of the request's target within the application. This may be an empty string, if the request URL targets the application root and does not have a trailing slash. This value may be percent-encoded when originating from a URL.
1 reply
Seb Wilgosz
@swilgosz

About the Hanami 1 -> 2 Upgrade steps: Here is the thread I'd love you all interested to continue on: https://discourse.hanamirb.org/t/hanami-1-3-hanami-2-0/702/2

Hope that helps!

cc: @Drowze @sebastjan-hribar

hsynaccodeing
@hsynaccodeing

Hello!
I am running Hanami 2.0.0.beta.1 and trying to enable JSON parsing as it is shown in Hanami router's readme page.

I am getting the error below as soon as I add the following line in my config.ru file.
require "hanami/middleware/body_parser"

ruby/gems/3.1.0/gems/hanami-router-2.0.0.beta1/lib/hanami/middleware/body_parser/errors.rb:12:in `<class:BodyParser>': uninitialized constant Hanami::Middleware::Error (NameError)

      class BodyParsingError < Hanami::Middleware::Error
                                                 ^^^^^^^
Did you mean?  IOError
               Errno

I am not sure if it is me that is missing something or it is failing to find error.rb class ?
Thanks in advance :)

4 replies
Hannes Elvemyr
@ehannes

Hi!

I've managed to get a working database connection after the beta1 upgrade, but regarding the hanami db create command - what did that command do? I understand that I need to create the database manually now, but then I get the following error:

ERROR:  relation "schema_migrations" does not exist at character 27
STATEMENT:  SELECT NULL AS "nil" FROM "schema_migrations" LIMIT 1
ERROR:  relation "schema_info" does not exist at character 27
STATEMENT:  SELECT NULL AS "nil" FROM "schema_info" LIMIT 1

Did the db create command create those tables, or am I missing something else? Thanks in advance :)

6 replies
Seb Wilgosz
@swilgosz
Hi all, for anyone interested in Hanami 1 -> Hanami 2 Upgrade, I've published a briefing on the changes we did as a first step. I'll publish more detailed articles soon. https://twitter.com/sebwilgosz/status/1564904261590319105
bilel-kedidi
@bilel-kedidi
Hello Everyone. i'm using hanami api and i would like to know, how to make cache with models, ( same for rails : Rails.cache.fetch(key) { Document.where(...) }
1 reply
bilel-kedidi
@bilel-kedidi
Hello guys.
I am working to swith some rails api to hanami api. But i found some issues.
bilel-kedidi
@bilel-kedidi
  1. Is there a template ready to use?. 2. If not how to make hanami api with entities and some actions?
7 replies
Sean Collins
@cllns

Hi Bilel. If you're taking about hanami-api, that will likely be deprecated soon. The reason is that, the full hanami framework will allow you to load only the components you need. And, you can always use hanami-router directly, if you're looking for a minimal API (though, with entities and actions, it seems like you'll want to use the full hanami framework).

If you install gem install hanami --pre then run hanami version to ensure you have v2.0.0.beta2, you can use hanami new to create a new app. FYI though, you'll be on your own for entities for now, and we recommend using ROM 5. Hanami 2.0 won't have a model layer, but Hanami 2.1 will (and will use ROM 6, which isn't out yet)