havenwood changed the topic of #ruby to: Ruby 3.4.4, 3.3.8, 3.5.0-preview1 https://www.ruby-lang.org | Log https://libera.irclog.whitequark.org/ruby
teardown has quit [Remote host closed the connection]
teardown has joined #ruby
intelligent_boat has quit [Ping timeout: 244 seconds]
fercell has quit [Quit: ZNC - https://znc.in]
fercell has joined #ruby
<havenwood> weaksauce: Nothing jumps out to me. It took me some stabs to get it working.
Linux_Kerio has joined #ruby
Vonter has joined #ruby
ap4y has quit [Remote host closed the connection]
jmcantrell has quit [Ping timeout: 260 seconds]
teardown has quit [Remote host closed the connection]
teardown has joined #ruby
ih8u2 has joined #ruby
ih8u has quit [Ping timeout: 276 seconds]
ih8u2 is now known as ih8u
ih8u2 has joined #ruby
ih8u has quit [Ping timeout: 252 seconds]
ih8u2 is now known as ih8u
teardown has quit [Remote host closed the connection]
teardown has joined #ruby
brw has quit [Remote host closed the connection]
brw has joined #ruby
infinityfye has joined #ruby
grenierm has joined #ruby
schne1der has joined #ruby
rvalue has quit [Read error: Connection reset by peer]
rvalue has joined #ruby
inline has quit [Ping timeout: 268 seconds]
Vonter has quit [Ping timeout: 276 seconds]
Vonter has joined #ruby
henk has left #ruby [#ruby]
dionysus69 has joined #ruby
TomyWork has joined #ruby
grenierm has quit [Ping timeout: 272 seconds]
gr33n7007h has quit [Ping timeout: 260 seconds]
sunyour has quit [Quit: sunyour]
sunyour has joined #ruby
gr33n7007h has joined #ruby
gr33n7007h has quit [Ping timeout: 268 seconds]
gr33n7007h has joined #ruby
ua_ has quit [Ping timeout: 252 seconds]
Linux_Kerio has quit [Ping timeout: 244 seconds]
rvalue- has joined #ruby
rvalue has quit [Ping timeout: 260 seconds]
ua_ has joined #ruby
rvalue- is now known as rvalue
gr33n7007h has quit [Quit: WeeChat 4.6.3]
gizmo has joined #ruby
gizmo is now known as gr33n7007h
sleetdro| has joined #ruby
sleetdrop has quit [Ping timeout: 268 seconds]
pastelowl has quit [Ping timeout: 276 seconds]
gr33n7007h has quit [Quit: WeeChat 4.6.3]
gizmo has joined #ruby
gizmo is now known as gr33n7007h
pastelowl has joined #ruby
Linux_Kerio has joined #ruby
gr33n7007h has quit [Quit: WeeChat 4.6.3]
inline has joined #ruby
inline has quit [Remote host closed the connection]
gr33n7007h has joined #ruby
szkl has joined #ruby
schn31d3r has joined #ruby
schne1der has quit [Ping timeout: 245 seconds]
<ih8u> it's always something
<ih8u> how am i supposed to install the pg gem
<ih8u> i know it's possible because i've done it before
<ih8u> but i'll be damned if i can remember the incantation
<ih8u> i've already pointed bundler and gem install to the appropriate pg_config and libpq-fe.h paths
<ih8u> and i know they exist where i say they exist
<ih8u> but the bundler and gem install both still say they can't find libpq-fe.h
<ih8u> so wtf
<ih8u> not only have i installed this stupid gem, i've done it before *on this same exact system* under a different user
wbooze has joined #ruby
<ih8u> right, well, apparently installing pg gem requires an empty double-flag `--` before the rest of the options but `budle` doesn't respect this?
<ih8u> like it just straight up skips the empty flag even though it's required to install the gem with options?
<ih8u> am i going crazy?
<ih8u> i guess last time i just took the easy way out and `gem install`ed it, but that well and truly defeats the purpose of bundler
<ih8u> so can someone please tell me what i'm supposed to do?
schn31d3r has quit [Ping timeout: 252 seconds]
pastelow1 has joined #ruby
pastelow2 has joined #ruby
pastelowl has quit [Ping timeout: 252 seconds]
pastelowl has joined #ruby
<ih8u> in the bundler docs itself it has an example of what i'm talking about
<ih8u> yet it fails
<ih8u> so again i ask: wtf
<ih8u> `gem install pg -- --with-pg-config=/usr/pgsql-17/bin/pg_config` installs the gem like i want
<ih8u> now how the hell do i get bundler to do it?
pastelow1 has quit [Ping timeout: 268 seconds]
pastelow2 has quit [Ping timeout: 272 seconds]
GreenResponse has joined #ruby
pastelow1 has joined #ruby
pastelowl has quit [Ping timeout: 268 seconds]
<ih8u> ugh
<ih8u> for fuck's sake
<ih8u> even when i decide i don't care anymore, i hit an insurmountable roadblock with sequel_pg which will just straight up not install under any incantation
<ih8u> god i hate this so much
<havenwood> ih8u: Already installed the Postgres dep? You have `libpq-dev` locally?
<ih8u> yes, or else i wouldn't have been able to install it before, or just now
<havenwood> Use SQLite? :P
<ih8u> pg, that is, not sequel_pg
<ih8u> havenwood: not feasible
<ih8u> though with the enormous pain in the ass that installing psql is, i'm mighty mighty tempted
<havenwood> Been playing with WAL2 build and looking forward to its release. Could be month. Could be years.
<havenwood> ih8u: It can indeed be a pain.
<ih8u> i fucking know this is possible because i've done it on this exact same machine
<ih8u> and on other machines multiple times
<ih8u> excuse my language but i am at my wit's end
<ih8u> i love ruby the language but the really, really hate deploying it
<ih8u> compound that frustration with the fact that i'm on an rhel-like, which i loathe, and i'm ready to tear my hair out
<ih8u> but seriously, whiat's up with the bundler thing?
<havenwood> ih8u: Try setting a bundler config to match your gem one.
<havenwood> bundle config set build.pg --with-pg-config=/usr/pgsql-17/bin/pg_config
pastelowl has joined #ruby
<ih8u> i've already done that
<ih8u> which i've documented above
<havenwood> ih8u: Show your `bundle config` then?
<ih8u> `BUNDLE_BUILD__PG: "--with-pg-config=/usr/pgsql-17/bin/pg_config"`
<havenwood> ih8u: If it's not a Rails app, maybe just bypass bundler.
<havenwood> gem install -g
<havenwood> If it is a Rails app, hardcoded to Bundler...
pastelow1 has quit [Ping timeout: 260 seconds]
schn31d3r has joined #ruby
<havenwood> When they said they were merging Bundler and RubyGems I always assumed Bundler differences would be resolved in favor of RubyGems conventions and `bundle` would be turned into the `gem install -g` feature that was in the works.
<havenwood> Instead, they just smushed 'em together and unified funding rather than tooling.
<havenwood> It was a mistake to start Bundler apart from RubyGems in the first place.
<havenwood> The RubyGems folk didn't like it from the start. Bundler folk didn't really have a reason other than couldn't be bothered. Now we have a two tools, one job.
<ih8u> i already confirmed i can install it without bundler
<ih8u> but that's beside the point
<havenwood> ih8u: I'm suggesting build your Gemfile.lock without Bundler.
<ih8u> it completely defeats the purpose of bundler
<havenwood> ih8u: A `gem install -g` does the same job (just does not work for Rails).
<havenwood> It takes a Gemfile, and produces a Gemfile.lock.
<havenwood> Then you: export RUBYGEMS_GEMDEPS=~
<ih8u> and even if i decide i don't care, my problem now is that sequel_pg will not install in any case
<havenwood> Was being worked on back at the "merger" but still works outside Rails environment.
<ih8u> for reasons i cannot humanly fathom
<ih8u> it's not a rails app, but rather roda
<kjetilho> naïve question - how does this interact with rbenv? I've always used bundler inside my rbenv's
<havenwood> ih8u: Just curious, but `gem i -g` works?
<ih8u> i'm inside rbenv myself
<havenwood> kjetilho: rbenv just creates shims (and is a facade for ruby-build). should just work with RubyGems and Bundler.
pastelow1 has joined #ruby
<ih8u> no it doesn't work
<ih8u> it returns the same error for sequel_pg
<havenwood> ih8u: So it's not a Bundler-specific issue, at least. It's a Gemfile.lock problem.
<havenwood> ih8u: So pg installs but not sequel_pg or neither work?
<havenwood> I know sequel_pg depends on pg, so assuming it's pg not building causing sequel_pg to fail?
pastelowl has quit [Ping timeout: 260 seconds]
<havenwood> Does just a pg without a sequel_pg in your Gemfile build? Assuming no?
<ih8u> pg is installed now via `gem install`
<ih8u> but sequel_pg is having none of it
<ih8u> sorry i've just been banging my head against this wall
<ih8u> it is absolutely maddening
<havenwood> Does a `gem install sequel_pg` succeed?
<ih8u> no
<ih8u> that's what's maddening about it
<ih8u> and pg is not in my gemfile, only sequel_pg, which depends upon it
pastelowl has joined #ruby
<ih8u> i'm so past caring anymore about what's "correct", i just want shit to work
<ih8u> i like ruby, but seriously, my heart cannot handle the rage this shit fills me with
pastelow1 has quit [Ping timeout: 272 seconds]
<ih8u> the doc makes it sound pretty as you please
<ih8u> mkmf.log
<ih8u> um, no
<ih8u> fucking computers are just not doing what i want them to today
<ih8u> anyway, the INSTALLING THE GEM< section reads `Make sure the pg_config binary is in your PATH so the installation can find the PostgreSQL shared library and header files`
<ih8u> which i've gone out of my way to do as to find the happy path
<ih8u> also something about exporting env vars
<ih8u> which i've also done
<ih8u> please someone just tell me i'm doing something wrong
<ih8u> that you know i've done something wrong because you just successfully installed the sequel_pg gem so i'm stupid and should die because i can't do it even though you have verified it's possible
pastelow1 has joined #ruby
pastelowl has quit [Ping timeout: 260 seconds]
<havenwood> ih8u: The only front and center sequel_pg installation caveat is:
<havenwood> "If RbConfig::CONFIG['LDFLAGS'] contains -Wl,--no-undefined, you’ll probably have issues installing sequel_pg."
<havenwood> Assuming this isn't the case, but maybe worth checking?
<ih8u> my brain is broken
<ih8u> how do i check that?
pastelowl has joined #ruby
<ih8u> never mind
<ih8u> `-L. -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,--no-as-needed`
<havenwood> I'd probably: RbConfig::CONFIG['LDFLAGS'].include?('--no-undefined')
<ih8u> i just `puts RbConfig::CONFIG['LDFLAGS']`
<ih8u> output is above
<ih8u> so it doesn't seem like that's my problem
<havenwood> ih8u: Maybe `-Wl,--no-as-needed` is an issue?
<havenwood> ih8u: But yeah, no `--no-undefined` so not that at least.
pastelow1 has quit [Ping timeout: 265 seconds]
<ih8u> i definitely didn't dive this deep getting the gem to install before
<ih8u> there's some fundamental thing i'm missing
<havenwood> I've not seen this particular thing before.
<ih8u> something so incredibly stupid that my eyes will roll out of their sockets when it is revealed to me
<ih8u> so just to be clear:
<ih8u> `gem install sequel_pg` does not work with pg_config on the path
<ih8u> `gem install sequel_pg -- --with-pg-config=/usr/pgsql-17/bin/pg_config` also does not work
<ih8u> `export POSTGRES_INCLUDE=/usr/pgsql-17/include/libpq-fe.h; export POSTGRES_LIB=/usr/pgsql-17/lib/libpq.so; gem install sequel_pg` also does not work
<ih8u> i think it's time to find a new job
<havenwood> ih8u: How about?: CFLAGS="" LDFLAGS="" gem install sequel_pg
<havenwood> I'm kinda suspicious of an LDFLAGS issue but don't have a good reason.
<ih8u> no
<ih8u> same error as always
<ih8u> `Could not find PostgreSQL build environment (libraries & headers): Makefile not created`
<havenwood> Stuff like this to make it work on macOS: https://github.com/jeremyevans/sequel_pg/pull/47/files
<havenwood> ih8u: What os/distro?
<ih8u> alma linux 9
pastelow1 has joined #ruby
<havenwood> ih8u: At least Jeremy Evans is an extremely responsive maintainer. I might start an issue.
<ih8u> yes, he is
<ih8u> some kind of angel
<ih8u> the worst part is, and i can't stress this enough, I'VE DONE THIS BEFORE
<ih8u> once on this same exact machine under a different user
<ih8u> and one on the same exact os IN PRODUCTION
<ih8u> so wtf?
<ih8u> i feel bad bothering the man with something that is obviously me doing something terribly wrong
pastelowl has quit [Ping timeout: 252 seconds]
<havenwood> ih8u: Could try?: export PKG_CONFIG_PATH="/usr/pgsql-17/lib/pkgconfig:$PKG_CONFIG_PATH"
<havenwood> ih8u: Maybe sanity check?: /usr/pgsql-17/bin/pg_config --ldflags
<havenwood> ih8u: I might double check env vars and packages are identical between the machines.
<ih8u> no change
<ih8u> and anyway, i know the stupid pg_config works and is on my path because not only have i already set this dev environment up under a different user, but i've installed the pg gem with the current user
<ih8u> i thought there must be some conflict in the latest version of sequel_pg gem
<ih8u> but installing the specific version per my gemfile makes no difference
BSaboia has quit [Ping timeout: 268 seconds]
<ih8u> "rebuild your dev environment with a dedicated user to match the app user in production", i thought
<ih8u> "it will eliminate all those silly headaches about rsync not preserving file ownership across machines", i thought
<ih8u> "life will be so much easier for you," i thought
<ih8u> now it's three hours later and i want to kill something
pastelowl has joined #ruby
<ih8u> namely, myself, but i thought that might set off some bot or something if i said that
pastelow1 has quit [Ping timeout: 260 seconds]
<ih8u> omg
<ih8u> `POSTGRES_INCLUDE=/usr/pgsql-17/include POSTGRES_LIB=/usr/pgsql-14/lib gem install sequel_pg`
<ih8u> i was just supposed to supply the directories
<ih8u> well, now the question is, how the hell do i make that work with bundler?
<ih8u> pg will install with bundler if pg_config is on the path
<havenwood> One is 17 and the other 14? Or typo?
cappy has joined #ruby
pastelow1 has joined #ruby
<ih8u> typo
<ih8u> but that apparently means that only the POSTGRES_INCLUDE is necessary
pastelowl has quit [Ping timeout: 260 seconds]
<ih8u> i'm sorry all of you had to witness my descent into insanity
<ih8u> i've documented this whole shebang now, so hopefully that will be the last of it
<ih8u> i still think ruby's deployment story sucks
miah has quit [Remote host closed the connection]
msv has quit [Remote host closed the connection]
miah has joined #ruby
pastelowl has joined #ruby
msv has joined #ruby
msv has quit [Remote host closed the connection]
msv has joined #ruby
pastelow1 has quit [Ping timeout: 245 seconds]
miah has quit [Remote host closed the connection]
miah has joined #ruby
pastelow1 has joined #ruby
pastelowl has quit [Ping timeout: 248 seconds]
pastelowl has joined #ruby
pastelow1 has quit [Ping timeout: 248 seconds]
<ih8u> okay, this is more of a linux question
<ih8u> but say i have myapp running in a vm on port 9292
<ih8u> and i can ssh into that vm
<ih8u> at `vm.local`
<ih8u> how do i view `vm.local:9292`
pastelow1 has joined #ruby
<ih8u> does that makes sense?
pastelowl has quit [Ping timeout: 252 seconds]
<kjetilho> typically you use either port forwarding (ssh -L) or use ssh as a SOCKS proxy (-D).
pastelowl has joined #ruby
pastelow1 has quit [Ping timeout: 244 seconds]
brokkoli_origin has quit [Remote host closed the connection]
pastelow1 has joined #ruby
pastelowl has quit [Ping timeout: 260 seconds]
user71 has joined #ruby
BSaboia has joined #ruby
pastelowl has joined #ruby
brokkoli_origin has joined #ruby
pastelow1 has quit [Ping timeout: 260 seconds]
pastelow1 has joined #ruby
pastelowl has quit [Ping timeout: 265 seconds]
oznek has joined #ruby
pastelowl has joined #ruby
pastelow1 has quit [Ping timeout: 248 seconds]
<The_Camel> it's lame that sinatra comes with a non-ssl compiled puma webserver.
pastelow1 has joined #ruby
pastelowl has quit [Ping timeout: 252 seconds]
<The_Camel> Also, I wanna punch windows for ever having a file path limit.
<The_Camel> of only 260 characters.
<The_Camel> at least make it 2048.
<The_Camel> or 4096.
<The_Camel> my backups aren't backing up. and I don't know if "enabling" long file paths on windows will actually make the software back up long file names.
<The_Camel> because if it doesn't, I'm fucked.
pastelow1 has quit [Ping timeout: 268 seconds]
pastelowl has joined #ruby
Vonter has quit [Ping timeout: 260 seconds]
Vonter has joined #ruby
cappy has quit [Quit: Leaving]
pastelowl has quit [Ping timeout: 260 seconds]
pastelowl has joined #ruby
ua_ has quit [Ping timeout: 276 seconds]
<havenwood> The_Camel: You can use Falcon or Itsi with Puma.
<havenwood> I mean, with Sinatra.
<havenwood> Or port your Sinatra app over to Roda. ;)
<havenwood> I mean, *and* port. Gosh, I need more coffee.
pastelow1 has joined #ruby
<havenwood> Falcon offers HTTP/2 support in pure Ruby and Itsi provides it with Rust libraries.
<havenwood> https://itsi.fyi
elmetah has joined #ruby
<havenwood> Itsi has binding to hyper https://hyper.rs
<elmetah> Best language at world would do 'E' as a shortcut to "echo" as command
<havenwood> Falcon uses protocol-http2 https://github.com/socketry/protocol-http2
pastelowl has quit [Ping timeout: 245 seconds]
<havenwood> Both use the Fiber Scheduler under the hood as well. Quite nice. Falcon is by the maintainer of Async and Ruby Fibers.
<The_Camel> havenwood, I'll have a look, thanks.
<elmetah> I need a board while "echo" as a button
ua_ has joined #ruby
<havenwood> elmetah: For option flags, 'print' is actually the GNU standard.
<elmetah> do it on shell, it's not good
<havenwood> The diff tool uses `-l` as the short flag. ¯\_(ツ)_/¯
<havenwood> Nice to check the GNU standards when considering an option flag.
<havenwood> The cat tool's -E is probably the most prominent -E flag.
<havenwood> And BSD cat doesn't support it. ;)
<havenwood> GNU only!
<elmetah> I need a editor where 'unction buttons emit string.add( "echo " ), string.add( " echo" ),,,
pastelowl has joined #ruby
<havenwood> elmetah: Your name make me think you hate elm.
pastelow1 has quit [Ping timeout: 245 seconds]
<havenwood> I guess it could be a helmet, the meal or the male.
<havenwood> And an e-hamlet.
<havenwood> elmetah: Let us know if you ever have any Ruby questions.
<havenwood> The_Camel: Roda really is nice. I'd highly recommend it over Sinatra as someone who used to use Sinatra avidly.
<havenwood> Cherry pick some of the plugins it ships with and off to the races.
<havenwood> Itsi is quite new but Falcon has been around a while.
<havenwood> Both made out of New Zealand.
<havenwood> 🇳🇿
<The_Camel> havenwood, it will require some effort to switch framework right now
<havenwood> The_Camel: A Sinatra-to-Roda port is one of the easiest, but I hear ya!
<The_Camel> havenwood, main concern is front end to be honest.
<The_Camel> it bothers me
<elmetah> How can I use Ruby to write a source editing journal under 2 minutes while using serialized non-directory as storage?
<elmetah> Done
pastelow1 has joined #ruby
johnjaye has joined #ruby
<elmetah> 2002: Ruby making blog under 16 minutes, 2010: Ruby making blog under 16 minutes, 2020: Ruby making blog under 16 minutes, what is going on here?
jmcantrell has joined #ruby
<havenwood> elmetah: The modern variant is creating a chat with Action Cable.
pastelowl has quit [Ping timeout: 260 seconds]
<elmetah> Are you saying I'm useless like a chainsaw while no woods to clear?
<havenwood> elmetah: Fun fact, "Nokogiri" is "chainsaw" in Japanese.
<havenwood> 鋸
<The_Camel> under 16 minutes?
<The_Camel> bro. i measure my projects in weeks.
<The_Camel> lol
<elmetah> Thank you mr dude, und mr awesome, you guys get real_time award, but our "under 16 minutes along Ruby" imagery is still hitting us hard as a community
pastelowl has joined #ruby
<elmetah> It's two zero two two human-hand (iiiii -- at case you can't remember) : we build our blogs as weeks, 2003 built blogs as hours
<The_Camel> i have no idea what the fuck you're on about.
<elmetah> I'm done
<The_Camel> You want a blog in 16 minutes? Use Google Blog creator.
<elmetah> Is it written as Ruby?
pastelow1 has quit [Ping timeout: 248 seconds]
<The_Camel> You want a superficial blog that you will start writing things in immediately and grow later? use jekyll.
wbooze has quit [Quit: Leaving]
<elmetah> I want answers as non-answers, eureka! bingo!
<elmetah> Got a good idea
schn31d3r has quit [Ping timeout: 248 seconds]
oznek has quit [Quit: Leaving]
<The_Camel> I still don't know what you're on about.
Linux_Kerio has quit [Read error: Connection reset by peer]
Linux_Kerio has joined #ruby
pastelow1 has joined #ruby
<havenwood> !spam elmetah
<ruby[bot]> havenwood: Could not process command, usage: !spam nick [channel]
<havenwood> !spam elmetah #ruby
elmetah was kicked from #ruby by ruby[bot] [spamming is a bannable offense, see http://ruby-community.com/pages/user_rules]
cappy has joined #ruby
dionysus69 has quit [Ping timeout: 252 seconds]
pastelowl has quit [Ping timeout: 276 seconds]
pastelowl has joined #ruby
pastelow1 has quit [Ping timeout: 272 seconds]
o0x1eef has quit [Ping timeout: 260 seconds]
o0x1eef has joined #ruby
The_Camel has quit [Remote host closed the connection]
The_Camel has joined #ruby
jmcantrell has quit [Ping timeout: 248 seconds]
cappy has quit [Quit: Leaving]
pastelowl has quit [Ping timeout: 272 seconds]
TomyWork has quit [Remote host closed the connection]
Evil-Bob has quit [Quit: The Lounge - https://thelounge.chat]
Evil-Bob has joined #ruby
fantazo has quit [Quit: leaving]
wbooze has joined #ruby
Vonter has quit [Ping timeout: 260 seconds]
schn31d3r has joined #ruby
wanderfish has joined #ruby
<The_Camel> kinda sucks how implementing pagination on a filesystem technically "doesn't work"
<The_Camel> I could "restrict" the list_files() function to only list "files starting with A, B, C..."
fantazo has joined #ruby
<The_Camel> but now I've got an A-Z pagination. which, to be fair, isn't so bad.
<The_Camel> but basically, it will always be Pages 1-26.
jmcantrell has joined #ruby
<The_Camel> win32, underneath has a nice mechanism for triggering an event on "every newly enumerated file"
<The_Camel> which means you can then cap it and say - "list me the first 20 files. ... next 40... next 60..."
<The_Camel> but ah well
<The_Camel> havenwood, have you ever told the difference between regular sinatra and modular sinatra?
<The_Camel> is the latter basically a "more protected" scope space?
<The_Camel> or is it, ultimately, just, OOP sinatra..
<kmad> The_Camel: Why can't you list files in groups of e.g. 20?
<The_Camel> kmad, don't think there's a ruby function in the Dir class for that.
<The_Camel> unless I may have omitted it.
<o0x1eef> With modular Sinatra you can group your routes in logical units, each class can be something like a controller, and each class is its own application you could mount at a given path
<The_Camel> o0x1eef, yeah, it's that last bit I don't quite get. "each class is it's own application".
<weaksauce> The_Camel use lazy enumerators perhaps
<The_Camel> and what do you mean by mount?
<o0x1eef> In terms of Rack. Each class is its own Rack application, and you can mount / map a Rack application to a given URL in a file like config.ru.
<The_Camel> never used rack but I think the only analogy I can assign that to might be the possibility of having multiple websites under the same server.
<The_Camel> is that it?
<o0x1eef> You could also introduce your own superclass that other classes would inherit from. So you can organize your code a bit better.
<o0x1eef> A rack application is an object that implements #call and returns an array with [status, headers, body]. It can also use middleware, which can filter a request before or after an application has handled a request.
<The_Camel> I also presume it creates a process/thread for each "application" too
<o0x1eef> Rack is worth learning about because its the foundation of modern ruby web frameworks, all of them use it
wbooze has quit [Quit: Leaving]
<The_Camel> just asked chagpt what rack is, i thought it was a webserver but it seems it's like some sort of WSGI interface.
<havenwood> The_Camel: +1 to weaksauce's suggestion. Just iterate.
<havenwood> The_Camel: Dir.each_child(dir).lazy.filter { ... }.each_slice(page_size)
<havenwood> Or for most pagination libraries, you can just pass it directly and it'll handle.
<o0x1eef> In the case of Sinatra, each class is its own application that can have its own middleware, its own configuration, etc. There could also be a common superclass. So it is really useful if your app is going to be big. Otherwise classic sinatra can be fine.
<The_Camel> yeah, ok, so it's essentially another "webapp" on the same server.
<havenwood> The_Camel: Rack is a standard. Sinatra, Roda, Rails, Hanami are all Rack apps. You can also write a Rack app directly in Rack. Roda adds a nice routing tree on top of Rack and plugin to cherry pick.
<kmad> Yeah, I mean, at the end of the day, you're just slicing a list, so why not a list of files?
<havenwood> Any Rack app can run on any Rack webserver, since it's the Rack webserver implementing the spec.
<The_Camel> havenwood, would that lazy filter work on an already "enumerated" list of files or does it actually force the OS to be lazy?
<The_Camel> because I'd assume it lists all files first, then does the work. my goal was kinda not to do that lol
<havenwood> With Pagy or whatever can take the enumerator directly and it handles the pagination rather than slicing.
<havenwood> The_Camel: No, Dir.each_child provides an Enumerator.
<The_Camel> ah. right
<The_Camel> i'm dumb. now i see it. sweet.
<havenwood> It's probably a nice idea to create a little pure Rack app. You can run it with Puma, Falcon, Itsi, whatever.
<havenwood> Then you see why Roda's routing tree is nice!
<havenwood> And exploring Roda plugins is worthwhile in its own right.
<o0x1eef> Agree. Also check out rack middleware.
<havenwood> Highly recommend porting to Roda when you get a chance.
<havenwood> +1 middleware
<The_Camel> lacking so much web knowledge. all because I spent so much of my time in win32 :(
<havenwood> Understanding a Rack app and middleware is clutch.
<The_Camel> right, I'll make a note to look into rack and make an app. cheers guys.
<havenwood> Then port it to Roda. :)
<havenwood> Simple and elegant.
<The_Camel> well, in my current project, I thought modular sinatra was just OOP sinatra
<havenwood> class SimpleStringApp def call(env) = [200, { "Content-Type" => "text/plain" }, %w[xoxo]] end
<havenwood> run SimpleStringApp.new
<The_Camel> wrote my project in that style. didn't really need it -_-
<The_Camel> i mean....
<havenwood> That's ^ a rack app, for example. Save it as `config.ru` and run it with `puma` or whatever.r
<The_Camel> I do like oop
<The_Camel> so I guess it wasn't all for naught.
<The_Camel> I like controllers being separate files
<o0x1eef> I think it is a little weird because it is a DSL inside a class body
<The_Camel> havenwood, so if I have 9 controllers, I have 9 rack apps?
<The_Camel> 9 classes.
<o0x1eef> It depends if each class inherits from Sinatra::Base or a common superclass, you can build one applicatio this way too, but organize the application into classes.
<The_Camel> I see. yes it does inherit from Sinatra::Base
<The_Camel> and it's 14 controllers **
<o0x1eef> If you have one class that inherits from Sinatra::Base and all other controllers inherit from that common superclass you have one application organized across multiple classes, with the same middleware + config
<The_Camel> oh. oh nice. well, that means my code sucks because all my controllers inherit from Sinatra::Base
<The_Camel> and I was forced to provide a path to /view each time. which I didn't really want but meh
<o0x1eef> Right, that could be set on the superclass and inherited by all the other controllers
<The_Camel> mhm....
<The_Camel> I can change it when I get into the mood I guess. but that's useful to know, thanks.
<o0x1eef> Yep, and then as you might expect a subclass can add middleware that's unique to it, or override config settings set by the common superclass. So it provides some useful patterns for bigger apps.
<The_Camel> looking at this right now. looks great for constructing a parse tree
<The_Camel> but parsing it looks intimidating.
<The_Camel> oh great. the project is gone
<havenwood> The_Camel: Seriously, just switch to Roda. Should take just a minute and no footguns.
<The_Camel> this. is why. i don't like. the status quo. of ruby. and I want. to hire an army of devs. to make something. similar to qt.
<havenwood> jeremy evans roda
<havenwood> Best maintainer, I swear.
<The_Camel> havenwood, I opened the site. I'll have a look.
<havenwood> And maintains Rack and is a member of Ruby Core.
<havenwood> The_Camel: It's quite, quite nice. And modern and maintained.
<o0x1eef> I'm not sure languages like Ruby are good for desktop apps. Usually you want something compiled for that.
<havenwood> o0x1eef: I concur.
<The_Camel> o0x1eef, you mean search_parser? it's for web.
<The_Camel> I take in a search string and it may look like "I want dresses && hats && shoes but no shoes that are black."
<The_Camel> so while search_parser creates a nice AND and NOT tree
<The_Camel> parsing is afterwards is messy. requires
<The_Camel> map() and reduce()
<The_Camel> which I'm not so used to.
<o0x1eef> You mentioned building something similar to qt for ruby, and I think you'd have limited success with that. At least commercially. Ruby would have to be distributed to the customer somehow, so it requires a third party runtime, and the source code is going to be plain to see, which is not great for commercial purposes
<The_Camel> o0x1eef, well, that was hypothetical. I'm not going to build it. at least not until I end up rich and can hire an army of devs :)
<havenwood> The_Camel: MRuby would make more sense. See DragonRuby as an example of the portability.
<The_Camel> just saying I would have loved to build a qt-like framework for ruby if I was rich.
<The_Camel> havenwood, a game engine in ruby?
<havenwood> The_Camel: Check it out. It's in MRuby. You could do similar with a desktop framework.
<havenwood> Mobile/desktop.
<The_Camel> oh i see
<The_Camel> "find on github"
* The_Camel kills himself
<havenwood> The_Camel: There are various graphics bindings: https://mruby.org/libraries/
<The_Camel> well, at least it's in v3.4
<havenwood> MRuby's version doesn't in any way correspond to Ruby's version.
<The_Camel> and not 0.17 alpha
<havenwood> But yeah, it's well established.
<The_Camel> havenwood, (*thumbs*)
hombrelaser1 has quit [Quit: Adiós!]
<The_Camel> of that one I know :)
<The_Camel> but I avoided it because I presume not everything available in ruby gems is going to work on it
<The_Camel> which just ticks me off real bad
<o0x1eef> Yeah, it is its own language in its own right. Ruby-like at best.
<The_Camel> o0x1eef, you see, the way I see ruby and python and all these VHLLs
<The_Camel> is like a giant. cookie. (bruce almighty reference)
<The_Camel> i chew and I see bits raw
<The_Camel> some parts of said cookie are burnt
<The_Camel> some are already chewed by someone else
<The_Camel> and I just don't fucking enjoy a goddamn, own, cookie
<havenwood> You can't use Ruby gem in MRuby either. Gotta use mgems.
<The_Camel> which is why I sometimes return to C#
<havenwood> And build MRuby with the mgems you need.
<havenwood> The_Camel: Rust or Zig. Pick your poison.
<The_Camel> havenwood, oh, right. so I can't chew my cookie now in some areas because I need special teeth because of the baked in walnut shells
<The_Camel> havenwood, C# and .NET
<The_Camel> because it feels more complete in all honesty :)
<The_Camel> but even then
<havenwood> At least J#.
<The_Camel> I encounter situations
<havenwood> |>
<The_Camel> where I must rely on the bloody NuGet
<The_Camel> repo
<havenwood> Rust and Zig are nice.
<o0x1eef> Each language has its strengths and weaknesses, I'd prefer to use Ruby for web stuff than say Rust but then if I wanted to target a desktop I'd probably rather to use Rust. So it depends what you want to do. CRuby is a strong web | cloud language.
<havenwood> o0x1eef: Yeah, I'd want to use Ruby or Elixir rather than Rust for web.
<The_Camel> CRuby? So now my cookie has maple syrup inside?
<havenwood> We call MRI "CRuby" these days.
<havenwood> It's YARV, ("yet another VM") rather than MRI ("Matz' Ruby Interpreter") since it's a VM now rather than simple interpreter.
<The_Camel> Yaaarrrrr...v.
<havenwood> CRuby, JRuby, MRuby, TruffleRuby, Artichoke, Natalie, et al.
<o0x1eef> MRI <= 1.8
<havenwood> Back in those days there was IronRuby for .NET too.
<The_Camel> And when I win the lottery, make room for QRuby.
<havenwood> Maglev was cool. That's the one I miss.
<havenwood> We went from YJIT to ZJIT so I think A JIT is next.
<o0x1eef> Those were exciting times for Ruby
<o0x1eef> Rubinius too
<havenwood> ZJIT is interesting, but so early. It'll be interesting to see how far it gets by Christmas.
<havenwood> I suspect it'll be ready to replace YJIT as the default by Christmas of 2026.
<The_Camel> so many ruby related projects but still no opensource IDE
<havenwood> neovim
<user71> +1
* The_Camel grabs backscratcher.
<The_Camel> that's not an IDE.
* The_Camel scratches back.
<havenwood> helix
* The_Camel scratches havenwood's back
<The_Camel> that's not an IDE.
<havenwood> Everything short of nano is an IDE these days.
<havenwood> The_Camel: Has LSPs, debugger, formatter, tree-sitter parser, highlight, textobject and indent queries. Seems like an IDE.
<o0x1eef> Plugin system too
<The_Camel> it has them. but it doesn't come with them.
<The_Camel> So as I sit there, scratching my back, I open up neovim for the first time and I'm like
<o0x1eef> I think VS Code wouldn't disappoint if you're looking for something IDE-like, with minimal effort
<havenwood> The_Camel: helix kinda does
<The_Camel> sigh. this IDE needs plugins.
<The_Camel> so I spend 30 minutes going around looking for ruby plugins
<havenwood> The_Camel: helix just works
<havenwood> modal editor akin to neovim
<havenwood> neovim is also quite popular and has great ruby support
<havenwood> Or Zed is done by one of the Pry folk (cirwin) if you're into that llm stuff.
<The_Camel> do I have to download the neovim-for-ruby version of neovim to have it "just work" ?
<kmad> +1 for (neo)vim, I use it for _everything_, Ruby, Elixir, Go, C, assembly, markdown, as a hexeditor, etc.
<The_Camel> because if I do, I'll be scratching my back a few more times.
<havenwood> The_Camel: Maybe grab neovim, helix and zed and see what fits.
<o0x1eef> +1 zed
<o0x1eef> That's a modern choice worth a shot
<The_Camel> havenwood, got something that actually uses the xorg/wpf manager instead of being a TUI?
<The_Camel> wayland nowadays **
<The_Camel> zed seems to be one.
<The_Camel> neat
<The_Camel> is it... an electron app?
<The_Camel> oh. seems it's not. even neater.
<The_Camel> there's pricing?!
schn31d3r has quit [Ping timeout: 276 seconds]
<The_Camel> 50 prompts per month free.
<The_Camel> I'm gonna
<The_Camel> kill myself.
infinityfye has quit [Read error: Connection reset by peer]
eddof13 has joined #ruby
* The_Camel notes to self. When I win the lottery, have an army of devs in one company to build a ruby IDE, not just a qt-like framework for ruby.
<fantazo> The_Camel: you forgot the hookers.
<The_Camel> fantazo, thanks for reminding me. I also need blackjack.
<fantazo> The_Camel: yeah.
eddof13 has quit [Client Quit]
<The_Camel> in all honesty though, I think what o0x1eef said about being "multilingual" makes sense nowadays in such a bad ecosystem
<The_Camel> want desktop? just go rust or c#
<The_Camel> want web? just go ruby or python
<havenwood> Zed is written in Rust.
<The_Camel> want ai? just go python
<havenwood> So is Helix.
<havenwood> Elixir is starting to develop a nice distributed AI ecosystem.
<The_Camel> havenwood, yeah but that's like saying "(me) I want a hammer. (storekeeper) here's a plier. (me) I guess I can hammer things with this... (storekeeper) It's made of aluminium and oak wood."
<The_Camel> at which point I just stare at the storekeeper.
<The_Camel> I wonder if the electronic industry is like the software world
<The_Camel> "I need a chip with these specs"
<The_Camel> "Here's a hammer"
user71 has quit [Quit: Leaving]
<The_Camel> And then the guy who actually has a chip with the specs I need built an IC as large as a tablet on a breadboard and sells it on amazon for 12$
<The_Camel> "I need that."
<kmad> I don't know... I think it's more akin to saying "I want a hammer specifically for this kind of nail and nothing else" when offered a perfectly capable hammer for most kinds of nails.
<The_Camel> and then it's out of stock because the dude who sold it died.
<The_Camel> kmad, naw, an IDE is like, the most natural thing to ask for.
<The_Camel> being told to "lego build an IDE" is, well, avoiding the real issue. there not being an IDE!
<The_Camel> sure. if I ever need to, I will go build that ide on some editor. i'm not that lazy
<The_Camel> but _there is no IDE_
<havenwood> I don't really want an IDE.
<The_Camel> I really want an IDE :)
<havenwood> I just set up the LSP so I can feel accomplished then disable it to type.
<kmad> The_Camel: Most people seem to be doing perfectly well without an IDE specifically for Ruby, and have been for some 30-ish years.
hombrelaser has joined #ruby
<The_Camel> kmad, but the matter of fact is
<The_Camel> __there is no IDE__ !
<havenwood> RubyMine, etc.
<weaksauce> use rubymine if you need one
<The_Camel> havenwood, HAHAHAHAHH, funny video. wish they had subtitles for what they actually said.
<kmad> Some would argue that, if there needed to be, there would be...
<The_Camel> rubymine isn't opensource.
<havenwood> Plain 'ole VS Code is more capable than an old-school IDE these days with an LSP.
<The_Camel> you know what. fuck it. i'll just grab a torrent.
<The_Camel> and keep my complains to myself lol
<havenwood> Just get colored pencils, write your code by hand, then have an LLM transcribe it.
<kmad> lol, it's a Norwegian video about Danish language. The "Danish" is just sounds that sound vaguely like Danish.
<havenwood> I really don't like autocompletion.
<The_Camel> I normally need an IDE for 3 primary reasons.
<havenwood> Is one an off by one error?
<The_Camel> debugger. tests. project management.
<kmad> Same. I'll Ctrl-x ctrl-{f,p,o,...} if I need to autocomplete, otherwise it just needs to stay out of my way.
<weaksauce> vscode can do all of that
<havenwood> ^
<The_Camel> I know it can but I have to "build" an IDE by... nevermind.
<The_Camel> where's the torrent list
<The_Camel> someone has to have rubymine somewhere
fantazo has quit [Quit: leaving]
<havenwood> I really don't think it's worth it.
<weaksauce> lol installing an extension is "building" an IDE now?
<The_Camel> weaksauce, it kinda is if I must reach the same level of an IDE by keeping track of at least 13-15 plugins
<The_Camel> really don't like that form of development.
<weaksauce> ruby-lsp plugin is one that does it all
<weaksauce> but you're set in your ways
<weaksauce> go forth and torrent
<The_Camel> yeah, I expect what should be there naturally, as it has been for decades.
hombrelaser has quit [Quit: Adiós!]
hombrelaser has joined #ruby
<The_Camel> weaksauce, ever went scubadiving? when I ask for a scubba-suit, I don't like being told "you can buy a helmet from amazon" and "flip flops, ask the captain", and for a harpoon I'm told "they're in norway, buy a ticket there first."
<The_Camel> that's not how it goes!
<The_Camel> "but people have been doing that for 30 years" is not an answer ;/
<kmad> Wtf kind of scuba diving do you do where suit, goggles and fins are molded together?!
<kmad> Those 3 things notoriously are acquired separately.
<The_Camel> kmad, in a submarine.
<kmad> That's not really scuba diving then, is it?
<The_Camel> it is now. :)
<The_Camel> I'll shut up.
<kmad> Remember to AV-scan the crap out of that...
<The_Camel> kmad, sure. see bottom of page. they already do it.
<The_Camel> and comments.
wbooze has joined #ruby
<havenwood> The_Camel: I'm an advanced open water diver and scuba is terrifying. Just like IDEs.
<The_Camel> havenwood, that's fine
<The_Camel> I've got nothing against people doing whatever they like.
<The_Camel> I got something against me not finding things that should be there :D
<havenwood> If you're going to RubyMine without a license, do just try VS Code with ruby-lsp since I suspect it's more nimble.
<havenwood> And more used.
<havenwood> Nothing against RubyMine folk. Just seems... big.
<kmad> The_Camel: VirusTotal does not catch everything --- by a long shot, and unless you're verifying the hashes, then those links are pretty moot.
<The_Camel> havenwood, I've tried it before. years ago. hell, I've used plugins with editors in the past. i found the experience rather disappointing and, frankly, "peasant poor" lol
<havenwood> When I was at Square it was cool to see them engaging with Steep. Gotta respect that, but too hefty for me.
<The_Camel> havenwood, a few GB is fine. less than 5GB? all good.
<The_Camel> havenwood, unlike visual studio which is at least 23GB
<The_Camel> kmad, sure.
<havenwood> The_Camel: Okay, you seem determined so: https://www.jetbrains.com/ruby/nextversion/
<havenwood> Use the EAP version. Should work fine.
<The_Camel> I already have a torrent downloading...
<The_Camel> 427MB
<The_Camel> that size is neat.
<havenwood> >.>
<kmad> lol, that's like 200 neovims (give or take a few) XD
<havenwood> The_Camel: VS Code is a fraction of the download size and disk space.
<havenwood> I'm no advocate of VS Code.
<The_Camel> 427MB is nothing ;/
<havenwood> Half a gig?
<havenwood> I guess.
<The_Camel> yup. that's nothing.
<The_Camel> I only get pissed when the size goes beyond 5GB
<havenwood> About 3 GB disk size?
<havenwood> (Guessing.)
<kmad> I mean, yeah, but for what's essentially a glorified Notepad it's quite a lot...
<The_Camel> I like being surrounded by glorified notepads. it makes me feel pretty.
<havenwood> A lot bigger than neovim!
<havenwood> Elegantly small.
<kmad> ... and fast ... and can run in a terminal/over SSH.
<The_Camel> Don't think I ever have a need to develop over ssh.
<The_Camel> also, if there's one thing I really love IDEs for, are scaffolders.
<kmad> Can't most build tools do that from a CLI anyway? (I don't know, I never use them.)
<The_Camel> scaffold? no. some require separate programs. like yeoman.
<The_Camel> kmad, in the nodejs world, it's more common to come with the tool.
<The_Camel> like vuejs
<kmad> Hmm. Mix (Elixir) has some scaffolding capabilities --- even more with Phoenix installed, IIRC --- and I think there was something in Ruby/Rails back in the days too. But yeah, maybe it comes with the tools.
<The_Camel> rails does come with scaffold tools
<The_Camel> yes
<kmad> But my point remains, it can usually be done from the CLI, so why would you need an IDE for it?
<The_Camel> I like one solution fits all sizes.
<The_Camel> and this goes not just for development, but for a lot of things.
* The_Camel makes camel noises.
<The_Camel> havenwood, looks neat.
<The_Camel> havenwood, if this was shared to me 20 years ago, I would've thought the same about "JaaS"
<The_Camel> but seeing it now, I believe it.
GreenResponse has quit [Quit: Leaving]
ruby[bot] has joined #ruby
<The_Camel> now you too can become a soviet communist nation, comrade! In the comfort of your PC.
cybniv has joined #ruby
niv has quit [Read error: Connection reset by peer]
<havenwood> Papers, Please.
eddof13 has joined #ruby
eddof13 has quit [Client Quit]
ap4y has joined #ruby
<The_Camel> havenwood, played it. loved it.
o0x1eef has quit [Ping timeout: 252 seconds]
o0x1eef has joined #ruby
cappy has joined #ruby
wbooze_ has joined #ruby
wbooze_ has quit [Client Quit]
wbooze has quit [Ping timeout: 260 seconds]