Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Dec 14 11:20

    timriley on application-settings

    Update integration spec to cove… (compare)

  • Dec 14 11:12

    timriley on application-settings

    Move Undefined into a place tha… Address Rubocop issues (compare)

  • Dec 13 19:56
    mfurkandemir starred hanami/hanami
  • Dec 13 18:56
    IvanShamatov closed #1022
  • Dec 13 18:56
    IvanShamatov commented #1022
  • Dec 13 11:53
    muriloime starred hanami/hanami
  • Dec 13 10:15
    depfu[bot] labeled #190
  • Dec 13 10:15
    depfu[bot] opened #190
  • Dec 13 10:15

    depfu[bot] on update

    Update dry-validation to versio… (compare)

  • Dec 12 23:39
    IvanShamatov review_requested #1021
  • Dec 12 23:38
    IvanShamatov edited #1021
  • Dec 12 23:37
    IvanShamatov edited #1021
  • Dec 12 21:49
    IvanShamatov synchronize #1021
  • Dec 12 20:45
    IvanShamatov synchronize #1021
  • Dec 12 13:07
    enkos starred hanami/hanami
  • Dec 12 12:19
    maxloh starred hanami/hanami
  • Dec 12 12:12
    IvanShamatov synchronize #1021
  • Dec 12 11:40
    helmihidzir starred hanami/hanami
  • Dec 12 09:18
    IvanShamatov synchronize #1021
  • Dec 12 04:55
    ryanbreed starred hanami/hanami
Edouard
@inouire_twitter
:thumbsup:
Kai Kuchenbecker
@kaikuchn

Well first of all, there is not ActiveSupport::TimeWithZone equivalent in Hanami. So if you need complex time zone stuff - and basic Ruby is really lacking there - you'll need to pull in a Gem for that.
tzinfo has recently improved the interfaces/usability of it's classes, but I haven't checked that out yet. A couple years ago when I was working a lot with time zones I wrote my own gem because ActiveSupport::TimeWithZone had some nasty bugs and while I liked the interface had many design decisions I did not like, plus it was difficult to get JUST time with zone and not all the rest.

I still regularly update that gem whenever there's a new tzinfo release, but I consider it "done". It focuses on correctness and ease of use over speed though.

But there is a gazillion other gems out there, any of which may do what you need. And if you don't have complex timezone needs, I'd suggest to stick with plain ruby as long as comfortably possible.

Oliynyk Taras
@tarnonero
Hello everyone ! I'm having a little trouble with running a hanami application
this is the error:KeyError: key not found: "DATABASE_URL"
alex jamz
@alexjamz_gitlab
use export DATABASE_URL="postgresql://localhost/hanami_app_development"
and hanami db prepare
Oliynyk Taras
@tarnonero
Ok, but the postgres wants the password..So any suggestions there ?
Kai Kuchenbecker
@kaikuchn
you can just add it to the url
just like with basic auth, i.e., postgresql://postgres:SuperStrongPassword@localhost/hanami_app_development
where postgres is the user name
David Dawson
@DangerDawson

What is the recommended way to prevent accidently exposing a XSS vulnerabilities in a view template? The hanami doc’s reccomend either explicitly providing methods for the template in the view e.g.

 def user_name
      user.name
 end

Or escaping the whole object before sending it to the template

 def user
      _escape locals[:user]
 end

Although this does not prevent accidentaly calling user.name in the view, or in the case of the _escape escaping the assoications of the object e.g. user.notes

Another option is to just turn auto-escaping on at the template engine level e.g.Haml::Template.options[:escape_html] = true
Although this goes against Hanami conventions ?
David Dawson
@DangerDawson
Ah, hanami/assets#36 answers the question why auto-escaping is not turned on at the template level
Arvy Petil
@alnpetil
Hi guys, has anyone tried using the light-service gem (https://github.com/adomokos/light-service) with Hanami?
image.png
I've included it and activesupport (since it's looking for it when I run tests) and now I'm getting that error which I'm not familiar with
Kai Kuchenbecker
@kaikuchn
Does the error go away if you don't include activesupport and/or light-service?
The constant in question recently came up when there was some issue with tilt (see rtomayko/tilt#347), so that's also making me a little suspicious. If you're using hanami-utils 1.3.4 maybe the changed lookup has some side-effects? If you're not using 1.3.4 try upgrading to it.
Kai Kuchenbecker
@kaikuchn
@jodosha you've digged into that recently, so maybe you have some insights as to what might be going on there. Here's the transcribed error @alnpetil is experiencing:
 1) Web::View::ApplicationLayout contains application name
    Failure/Error: let(:rendered) { layout.render }

    NameError:
      uninitialized constant Hanami::View::Rendering::NullView::TOPOBJECT
      Did you mean?  Object
    # ./apps/web/templates/application.html.erb:-7:in `method_missing`
Arvy Petil
@alnpetil
Yes it does go away, but ActiveSupport is a dependency, unfortunately, for light-service. I really liked that gem for chaining service objects and was planning to use the same to wrap the interactors I had. I was using Hanami v1.3.1
Arvy Petil
@alnpetil
Updated hanami-utils from 1.3.1 to 1.3.3 and no more errors! I'll let you know after I do more tests. Thank you @kaikuchn
Wonder if the issue you tilt issue is related
glaszig
@glaszig

@hfabre

btw I saw in ROM you can do schema(infer: true) { # ... } and only define specific attributes. It would be awesome to have the same feature in Hanami so we don't have to detail all the table schema for only one column

upvote for customizable inferred schema. i looked into it but as far as i saw it's not an easy change in hanami-model.

Luca Guidi
@jodosha
https://twitter.com/hanamirb/status/1182637973759823874 hanami-assets v1.3.4 - This version allows to precompile assets on Windows.
@kaikuchn @alnpetil That problem was caused by latest tilt. See https://twitter.com/hanamirb/status/1177498984551612416
Sebastjan Hribar
@sebastjan-hribar
Hi, I have a question regarding nested forms. I am building a form for 3 entities. For example, I have A - source string, B - target string and C - translation record. The main form is within the template for the C entity. By submitting the form all three should be created. What would be the best way to approach this? Can I reference the A and B from within the form for C? I can only find the nested fields reference in the guides under form helpers.
Sebastjan Hribar
@sebastjan-hribar
I guess this would be equivalent to fields_for in Rails. Although, another problem I have is also the fact that the C must contain IDs from A and B.
Sebastjan Hribar
@sebastjan-hribar
To add a bit more context to my question above. The goal is to build a translation editor interface, effectively having one template for managing multiple entities. What would the best practice be? I'm thinking of having a template for /translation_record (possibly /translation_editor) and then moving the logic to an interactor to handle the creation of all entities and finally calling the interactor in the translation_recordaction. Can someone point me in the right direction to build such more complex scenarios?
Kai Kuchenbecker
@kaikuchn
Can you show us some example code? Or maybe some pseudo code of what you'd like to achieve?
Sebastjan Hribar
@sebastjan-hribar
@kaikuchn Sure, I'll draft some pseudo code for the files and code I think would correspond for such scenario.
EGORIDI
@EGORIDI
Hi folks. I'm getting started with the tutorial and could'nt migrate the database schema. When I try I get a "SQLite3 SQLException: no such table: schema_migrations: SELECT NULL AS 'nil' FROM schema_migrations LIMIT 1" as well as " SQLite3::SQLException: no such table: schema_info: SELECT NULL AS 'nil' FROM schema_info LIMIT 1".
When I try to prepare the database with "HANAMI_ENV=test bundle exec hanami db prepare " I get "HANAMI_ENV=test : The term 'HANAMI_ENV=test' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again." Does anyone know how can I get through it?
Paweł Świątkowski
@katafrakt
@EGORIDI Are you using in-memory SQLite db? IIRC it does not work now, you should use persisted one.
Kai Kuchenbecker
@kaikuchn

When I try I get a "SQLite3 SQLException: no such table: schema_migrations: SELECT NULL AS 'nil' FROM schema_migrations LIMIT 1" as well as " SQLite3::SQLException: no such table: schema_info: SELECT NULL AS 'nil' FROM schema_info LIMIT 1".

It's okay for that table to not exist, it should simply be created subsequently. Sadly, this "error" is printed to the console and confuses people.
What @katafrakt said still applies.

EGORIDI
@EGORIDI
Thanks, I'll try it.
Emir Fernandes da Ponte
@EmirFernandes_gitlab
Hello!
Kai Kuchenbecker
@kaikuchn
Hi
Danny Santos
@DannySantos
Does anybody have any advice on clearing the params after an AJAX request? Because the template that gets rendered comes directly from (for example) the create view/controller, it still has the params that were submitted in the post request. This causes issues when, for example, re-rendering a form upon success. You don’t want the form builder to attempt to fill in the fields with the params.
Kai Kuchenbecker
@kaikuchn
Redirect on success instead of re-rendering the form. That way the user can even refresh the page without triggering a post again.
Danny Santos
@DannySantos
@kaikuchn but doesn’t that somewhat defeat the point of AJAX? The great benefit of asynchronous apps is that we can create a seamless user experience as well as make the app more efficient by not having to reload the page or redirect.
Kai Kuchenbecker
@kaikuchn
I'm not entirely sure what you're doing or trying to accomplish. Are you sending chunks of HTML and interpolate them into your existing DOM? If all you want to do after submitting a form via ajax is to clear it, why not just clear it client-side? Server could just give you a success response without a body in that case.
Again, not really sure what you're doing.
Danny Santos
@DannySantos
Generally what my AJAX requests do is either return a failure or success. If it’s a failure I simply use JS to display a notification. Upon success however, I generally display a notification and also re-render a section of the page, ususally by assigning the contents of a partial to a JSON object and then replacing the page section with JS.
smarthouseprojectdotorg
@smarthouseprojectdotorg
Hi I'm new to Hanami, is it a right place to ask questions? :)
smarthouseprojectdotorg
@smarthouseprojectdotorg

Got a problem with using repositories and the code below returns undefined method `all' for ROM::Relation::Composite It seems query methods are not chainable?

class UsersRepository < Hanami::Repository
def yesterday_and_older
users.where{ created_at < (DateTime.now() - 1.0) }.all
end
end

Could someone shed a light on it?

unleashy
@unleashy
@EGORIDI by the way, this error "HANAMI_ENV=test : The term 'HANAMI_ENV=test' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again." is just a Windows weirdness; you can't set environment variables before the command like you can in linux
the workaround is to set the env var before then unset it after:
> set HANAMI_ENV=test
> (do hanami stuff for the test env)
> set HANAMI_ENV=
(yes, it's extremely annoying)
maybe the hanami docs need to be updated to tell Windows users about that...
Sebastjan Hribar
@sebastjan-hribar
@smarthouseprojectdotorg You don't need/can't call the all method in your case. It's implemented so you can call allon the repository like UserRepository.new.alland it returns all entities. Your yesterday_and_older will return all entities corresponding to your condition.
Sebastjan Hribar
@sebastjan-hribar

I have a problem with updating a record. This is the very basic update action:

module Godmode
  module Controllers
    module ContactPersons
      class Update
        include Godmode::Action

        def call(params)
          @contact_person = ContactPersonRepository.new.update(params[:id], params[:contact_person])
          redirect_to "/godmode/contact_persons"
        end
      end
    end
  end
end

Up until I hit the submit button everything works. The updated params show up in the server log as well.
I also notice that no matter what I use to redirect to, it always goes to http://localhost:2300/godmode/contact_persons?id=3except for the 3 part of course.