Forum https://discourse.hanamirb.org – Code of Conduct http://hanamirb.org/community/#code-of-conduct
timriley on main
Add CHANGELOG entry for v2.0.0.… (compare)
timriley on main
Add CHANGELOG entry for v2.0.0.… (compare)
timriley on main
Prepare CHANGELOG entry for v2.… (compare)
timriley on main
Prepare CHANGELOG entry for v2.… (compare)
Hi all, I'd like to ask for you input on this use case: I'd like to move some rake tasks to UI actions. These tasks import CSV data, parse them and create DB records. Currently admin needs to run these inside the container. Since these need to be run more than once I need to make things simpler. The CSV files do not need to be stored on the server. So I'm thinking to have a file selection UI element that reads the file into memory and does the same processing as the rake tasks.
So I would use JS to read in the file and pass it in memory as a param to an interactor on a designated action. Is this the way to go? And should I take any special security measures?
Edit: @sebastjan-hribar what about the size of the file? Won't it be a memory issue if you'd work with big files? I see it as a bit risky if you need to load all the content without checking the max file size first. I would still save the file on the server, even in the temporary storage, and clean it up after processing finishes. This way I would introduce two endpoints, for file upload creation, and the second one for processing it. You could still merge those endpoints if that's a requirement.
PS: Sorry for typos in my original message, I really need to stop answering from mobile :)
Hello! :) i have few questions following custom helpers
i notices changing order of load_paths
impacts code loading, if i add 'helpers' dir last:
load_paths << [
'controllers',
'views',
'helpers'
]
then my Helper's don't get loaded, i get uninitialized constant Web::Helpers
during Hanami.boot
How do you gyus test helpers? Some helpers i have are dependent on params
or HtmlBuilder
Now I created a DummyView
and test this helper the same way as view, but maybe it would be possible to test this helper in isolation? some ideas? :)
question: i want to add 'log out' link. I have DELETE route for destroying user's session. I want to add it on template, in navbar, but it has to be form (as i need to make DELETE request). But then unit test for Layout fails, because of form helper:
NoMethodError:
undefined method `params' for #<Web::Views::ApplicationLayout:0x000055b1bfa7b1a8>
Some ideas? I could change route for GET and use normal link. Or try to disable CSRF protection somehow maybe? Or fix my test somehow :)
Folks, as you may have read in the alpha3 announcement, we’re going to release :point_right: monthly alphas :point_left:.
So far the alpha releases were scope bound :chart_with_upwards_trend:.
When the scope was developed, we used to release it.
Now that the ground work is done (thanks Tim :pray: ), we can change the release strategy and make it time bound :stopwatch:.
Once a month, we :shipit: a new alpha, with the improvements that we made since the previous release.
This puts us in a position to release often and build momentum. :fire:
We will focus on the cleanup of the application template. https://github.com/hanami/hanami-2-application-template
The template is a working Hanami 2 app.
By cleaning up it, we can reverse engineer what we need to implement in the framework.
:call_me_hand: If you want to contribute to Hanami, please start from the application template needs, and the work backward to enhance Hanami.
This is my first part of my yesterday's question. I've removed the gem list:
I'm experiencing a really odd issue. I'm getting TypeError at no implicit conversion of Integer into String
for this line: session[:session_start_time] + @validity_time.to_i < Time.now
. This started on a development branch where the only change that might impact this is the gemfile
or gemfile.lock
. On master, session[:session_start_time]
is a NilClass
and on the development the session[:session_start_time]
is a String class. I did delete the gemfile.lock
on the development and ran a fresh bundle install. The session[:session_start_time]
is set as Time.now
.
I've checked Tachiban and irb for the comparison and it runs fine, as well as on the master branch.
Now for the solution:
I've found the culprit. It was hanami 1.5.0
. Reverting it back to hanami 1.3.0
solves the problem. Now I don't know, does this qualify for an issue for Hanami or Tachiban?
scope
with path parameters feels a bit lonely. hanami/api#29Hey, sorry if it's been asked before. 1 day into Hanami
Is there a good hanami 2 app example with project structure?
Found https://github.com/hanami/hanami-2-application-template but it seems it doesn't have all the entities
Yo guys, quick question. Does hanami2(rom, sequeel) support psql yet?
When I run:
bundle exec hanami db create_migration apples
I get:
/src/vendor/bundle/ruby/3.0.0/gems/hanami-cli-2.0.0.alpha3/lib/hanami/cli/commands/db/utils/database.rb:32:in `block in []': psql is not a supported db scheme (RuntimeError)
PG::ConnectionBad: FATAL
docker-compose run --rm apple_project bundle exec hanami db drop
Creating apple_project_apple_project_run ... done
=> database apple_project_development dropped
❯
❯ brun hanami db create
docker-compose run --rm apple_project bundle exec hanami db create
Creating apple_project_apple_project_run ... done
=> database apple_project_development created
❯ brun hanami db migrate
docker-compose run --rm apple_project bundle exec hanami db migrate
Creating apple_project_apple_project_run ... done
bundler: failed to load command: hanami (/brokerkit/src/vendor/bundle/ruby/3.0.0/bin/hanami)
/brokerkit/src/vendor/bundle/ruby/3.0.0/gems/sequel-5.50.0/lib/sequel/adapters/postgres.rb:210:in `initialize': PG::ConnectionBad: FATAL: database "apple_project_development" does not exist (Sequel::DatabaseConnectionError)
hanamin db create_migration create_users
I keep getting the error below...what am I missing?Traceback (most recent call last):
23: from /home/aes/.rbenv/versions/2.7.2/bin/hanami:23:in `<main>'
22: from /home/aes/.rbenv/versions/2.7.2/bin/hanami:23:in `load'
21: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/hanami-cli-2.0.0.alpha3/exe/hanami:10:in `<top (required)>'
20: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/dry-cli-0.7.0/lib/dry/cli.rb:65:in `call'
19: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/dry-cli-0.7.0/lib/dry/cli.rb:116:in `perform_registry'
18: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/hanami-cli-2.0.0.alpha3/lib/hanami/cli/commands/application.rb:15:in `call'
17: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/hanami-cli-2.0.0.alpha3/lib/hanami/cli/commands/monolith/db/create_migration.rb:17:in `call'
16: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/hanami-cli-2.0.0.alpha3/lib/hanami/cli/commands/application.rb:54:in `database'
15: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/hanami-cli-2.0.0.alpha3/lib/hanami/cli/commands/application.rb:28:in `application'
14: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/hanami-cli-2.0.0.alpha3/lib/hanami/cli/commands/application.rb:28:in `require'
13: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/bundler/gems/hanami-5998b4f58d84/lib/hanami/init.rb:3:in `<top (required)>'
12: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/bundler/gems/hanami-5998b4f58d84/lib/hanami/init.rb:3:in `require_relative'
11: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/bundler/gems/hanami-5998b4f58d84/lib/hanami/setup.rb:7:in `<top (required)>'
10: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/zeitwerk-2.5.1/lib/zeitwerk/kernel.rb:35:in `require'
9: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/zeitwerk-2.5.1/lib/zeitwerk/kernel.rb:35:in `require'
8: from /home/aes/Coding/Ruby/HANAMI/hanami_2_auth_app/config/application.rb:11:in `<top (required)>'
7: from /home/aes/Coding/Ruby/HANAMI/hanami_2_auth_app/config/application.rb:12:in `<module:Hanami2AuthApp>'
6: from /home/aes/Coding/Ruby/HANAMI/hanami_2_auth_app/config/application.rb:15:in `<class:Application>'
5: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/bundler/gems/hanami-5998b4f58d84/lib/hanami/application/settings.rb:82:in `method_missing'
4: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/dry-configurable-0.13.0/lib/dry/configurable/config.rb:112:in `method_missing'
3: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/dry-configurable-0.13.0/lib/dry/configurable/setting.rb:79:in `value'
2: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/dry-configurable-0.13.0/lib/dry/configurable/setting.rb:147:in `evaluate'
1: from /home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/dry-types-1.5.1/lib/dry/types/type.rb:49:in `call'
/home/aes/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/dry-types-1.5.1/lib/dry/types/constrained.rb:42:in `call_unsafe': nil violates constraints (type?(String, nil) failed) (Dry::Types::ConstraintError)
postgresql://
support: https://hanamirb.org/blog/2021/12/07/announcing-hanami-200alpha4/
container['interactors.interactor_name']
? What if I typo the container name, when will Hanami catch that?
Hi everyone, I've written a JWT authorization gem build on top of dry to easily integrate with Hanami 2.0. https://discourse.hanamirb.org/t/authentication-and-authorization-recommendations/200/6?u=swilgosz
Feel free to check it out! A cool thing is that it uses dry-effects! :D
video.find(id)
I get both .location
and .location_id
to be nil and I can't do a consecutive location.find
because of that. How do I do this?
aggregate(:location).where(id: id).map_to(Video).one
in a single call — one of them doesn't seem to update parent object. or am I doing something wrong with this?
class VideoRepository < Hanami::Repository
associations do
belongs_to :location
has_one :video_info
end
def find_with_location(id)
aggregate(:location).where(id: id).map_to(Video).one
end
def find_with_info(id)
aggregate(:video_info).where(id: id).map_to(Video).one
end
def find_with_info_and_location(id) # this function doesn't populate location nor location_id
aggregate(:location).where(id: id).map_to(Video).one
aggregate(:video_info).where(id: id).map_to(Video).one
end
end
Hanami::Model.migration do
change do
create_table :videos do
primary_key :id
foreign_key :location_id, :locations, null: false
end
end
end
Hanami::Model.migration do
change do
create_table :locations do
primary_key :id
end
end
end
Hanami::Model.migration do
change do
create_table :video_infos do
primary_key :id
foreign_key :video_id, :videos, null: false, on_delete: :cascade
end
end
end
Hi everyone, first time here and with a question! I am trying to integrate Webpack (with Babel) for react using the hanami-webpack and hanami-assets gem, but I got into some trouble with import statements.
In my application.html.erb file, i use the <%= javascript 'index' %>
helper that points to my index.js file in assets, which works fine when it's pure Javascript and does not have any import statements. However, when i try to import React, it throws an error: "Uncaught SyntaxError: Cannot use import statement outside a module"
One of the solutions i found online is to put "type"="module"
to package.json to ensure that all .js files are seen as modules and not CommonJS - I tried doing it, but it lead to another error with my Webpack.config.js file, which is using 'require' instead of import. I changed the file extension to Webpack.config.cjs, which resolved the error the server was throwing, but I am still stuck with 'Cannot use import statement outside of module'
Does anyone know how to solve this? Is there a good example of how to integrate React with Hanami? Thanks!
Hey everyone, hope you are enjoying your holidays - just fyi, after several days of tinkering with trying to integrate React as the frontend with Hanami, I came up with a basic setup that I am hoping is useful to see for anyone who is new and would like to do the same thing - I gave up on Webpack because it was unnecessarily complicated, could not get hot reload to work and the compile times were pretty long - so I used ESbuild instead. Here is a repo with a template you can use: https://github.com/glemin5011/react_on_hanami
Just be aware that it does not have any installer or anything, so things such as .env files etc. are not really transferrable to new projects - this repo is more of a demo / guide
Edit: This is for Hanami v1.3.5
Hey, I have this code in the views/application.rb
:
def current_user_roles
UserRepository.new.find(session[:current_user]).roles
end
where the current_user is the user's ID. However, the view has no access to the session
. How can I bypass this? The use case is limiting the displayed items as per user roles.