Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 15:08
    asterite synchronize #12563
  • 15:01
    straight-shoota milestoned #12562
  • 15:01
    straight-shoota milestoned #12562
  • 14:53
    asterite edited #12563
  • 14:50
    asterite opened #12563
  • 14:50
    asterite labeled #12563
  • 14:50
    asterite labeled #12563
  • 14:49
    asterite assigned #12560
  • 14:36
    asterite labeled #12562
  • 14:36
    asterite labeled #12562
  • 14:36
    asterite opened #12562
  • 14:35
    asterite assigned #12561
  • 13:38
    straight-shoota labeled #12559
  • 13:22
    Blacksmoke16 labeled #12561
  • 13:22
    Blacksmoke16 labeled #12561
  • 13:21
    straight-shoota opened #12561
  • 13:18
    straight-shoota labeled #12560
  • 13:18
    straight-shoota opened #12560
  • 13:18
    straight-shoota labeled #12560
  • 12:51
    straight-shoota labeled #12559
Johannes Müller
@straight-shoota
class MyApp < Kemal::Application
  get "/" do |env|
    "hello"
  end
  def initialize_instance_routes
    get "/foo" do |env|
      "bar"
    end
  def
end
app = MyApp.new
app.initialize_instance_routes
app.run
Line 2 targets the maro, line 6 the instance method
Ghost
@ghost~55586c4815522ed4b3e08557
I don't get the use case of instance routes, but an idea of impl could be:
class MyApp < Kemal::Application
  get "/" do |env|
    "hello"
  end

  # `instance_routes` could be a macro that will define the `initialize_instance_routes` method
  instance_routes do # Here using `with .. yield`, the instance routes can be configured with another DSL (could be methods, .. whatever)
    get "/foo" do |env|
      "bar"
    end
  end
end
app = MyApp.new
app.initialize_instance_routes
app.run
From IRC (bridge bot)
@FromIRC
<oprypin> removed really
From IRC (bridge bot)
@FromIRC
<Groogy> mersenne twister random generation isn't that good though :⁠/
Johannes Müller
@straight-shoota
Well the initialize_instance_routes method is not part of the DSL, it could be any method defined in a custom application subclass.
Ghost
@ghost~55586c4815522ed4b3e08557
I like the idea of macro only for class scope though!
Johannes Müller
@straight-shoota
The use case is that you might want to optionally add routes depending on configuration values or some other decision run-time
Ghost
@ghost~55586c4815522ed4b3e08557
but in this case, you should have a Router object, that you configure via methods or sth like that
Johannes Müller
@straight-shoota
The router is configured through the application
get method would actually call route_handler.add_route("GET", path, &block)
Ghost
@ghost~55586c4815522ed4b3e08557
like:
class App < Kemal::Application
  def some_method
    router.setup do
      get "kjhj" ...
    end
  end
end
Johannes Müller
@straight-shoota
I think the idea is to put these abstractions away
Bar Hofesh
@bararchy
Is there a PDF creator in Crystal ?
Cris Ward
@crisward
Int24 in crystal anyone?
From IRC (bridge bot)
@FromIRC
<oprypin> no
Yuri Vendruscolo da Silveira
@yvern
hello,
how can I get current working dir path (pwd) at run time?
basically I need to access other files that are going to be at the same folder, but if I either use "./file_name" or Dir.current+"/fie_name", crystal gets the path at compile time, and if I place this same folder anywhere else, it tries to look for those files at the dir I compiled it.
thanks!
Ghost
@ghost~55586c4815522ed4b3e08557
Dir.current should give you the runtime current working directory
Cris Ward
@crisward
Didn't think so...
Ghost
@ghost~55586c4815522ed4b3e08557
It calls internally getcwd which does just that
Peter Leitzen
@splattael
As Crystal 0.23.1 is out, is there a timeline to release 0.23.1 as a docker image on https://hub.docker.com/r/crystallang/crystal/?
Yuri Vendruscolo da Silveira
@yvern

I have compiled simply :

puts Dir.current

and I got:

Yuris-MacBook-Pro:~ yuri$ /Users/yuri/Desktop/test ; exit;
/Users/yuri

so even though I opened it from desktop, it gives me another path... ):

Ghost
@ghost~55586c4815522ed4b3e08557
Well, it gives you your current working directory, not the directory where the binary is. I can see in your prompt that you are in ~ which corresponds to your home, which is /Users/yuri.
The binary is in Desktop, but you launched it from your home directory
Yuri Vendruscolo da Silveira
@yvern
in that case, is there a way to get the dir where the binary is?
From IRC (bridge bot)
@FromIRC
<oprypin> @yvendruscolo, it's File.dirname(PROGRAM_NAME)
<oprypin> or the notorious crystal-lang/crystal#4715
Yuri Vendruscolo da Silveira
@yvern
thanks guys!
From IRC (bridge bot)
@FromIRC
<Papierkorb> $PROGRAM_NAME can be changed, by the running program, or by the program executing it
<oprypin> sorry what
<oprypin> this is the better alternative, but i dont get your comment about PROGRAM_NAME
<Papierkorb> program name is the name, which doesn't have to be the name of the binary.
<oprypin> demonstrate
MB
@marceloboeira
Hello Guys
From IRC (bridge bot)
@FromIRC
<Papierkorb> See exec(3).
MB
@marceloboeira
quick question, is it possible to get the real class/type of a object from a macro?
From IRC (bridge bot)
@FromIRC
<oprypin> @marceloboeira, {{ @type }}
MB
@marceloboeira
hmm, not sure. the type of a given parameter of a macro
macro foo(value)
      MyGenericClass({{value.class_name.id}}).new
end

foo("hello")
From IRC (bridge bot)
@FromIRC
<oprypin> that's fair. @yvendruscolo, see Papierkorb's suggestion. File.dirname(Process.executable_path)
MB
@marceloboeira
given "hello" I want to create MyGenericClass(String).new("hello")
From IRC (bridge bot)
@FromIRC
<oprypin> @marceloboeira, macros deal only with literals
MB
@marceloboeira
that's what I thought :/
From IRC (bridge bot)
@FromIRC
<oprypin> that would hopefully be MyGenericClass.new({{value}})
<Papierkorb> @marceloboeira, that syntax should work fine without for this case: The generic type can be auto-deduced from the arguments given to #initialize
<oprypin> MyGenericClass(typeof({{value}})).new({{value}}) might work but is redundant
MB
@marceloboeira
hmm
the typeof works!!1
thanks :)
From IRC (bridge bot)
@FromIRC
<oprypin> @marceloboeira, yeah but pls dont ignore the part about not needing it