Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 10:44
    straight-shoota labeled #12539
  • 10:44
    straight-shoota labeled #12539
  • 10:44
    straight-shoota opened #12539
  • 10:44
    straight-shoota labeled #12539
  • 08:59
    straight-shoota synchronize #12536
  • 08:44
    straight-shoota opened #12538
  • 08:44
    straight-shoota labeled #12538
  • 08:44
    straight-shoota labeled #12538
  • 08:28
    straight-shoota milestoned #12537
  • 08:28
    straight-shoota milestoned #12537
  • Sep 28 23:06
    Blacksmoke16 labeled #12537
  • Sep 28 23:06
    Blacksmoke16 labeled #12537
  • Sep 28 22:49
    straight-shoota unassigned #8712
  • Sep 28 22:49
    straight-shoota unassigned #8712
  • Sep 28 22:49
    straight-shoota assigned #8712
  • Sep 28 22:22
    hugopl opened #12537
  • Sep 28 21:42
    straight-shoota labeled #12536
  • Sep 28 21:42
    straight-shoota labeled #12536
  • Sep 28 21:42
    straight-shoota opened #12536
  • Sep 28 21:22
    straight-shoota milestoned #12535
From IRC (bridge bot)
@FromIRC
<mfiano> to be fair, my first project was actually going to be a library, so maybe i should have clarified before asking :⁠)
George Dietrich
@Blacksmoke16
@RespiteSage take a look at oq_cli.cr
might be easier to test
Benjamin Wade
@RespiteSage
Yeah, libraries bypass those considerations.
George Dietrich
@Blacksmoke16
i.e. use option parser to process the args and create an instance of the actual type, passing in those args
From IRC (bridge bot)
@FromIRC
<mfiano> Doubtful, as all the new kids seem to prefer vscode, but anyone using vim/nvim for crystal?
Benjamin Wade
@RespiteSage
I am one of those new kids, but I know I've seen people talk about using vim/nvim (and at least one or two other terminal editors) when writing Crystal.
From IRC (bridge bot)
@FromIRC
<mfiano> I guess one of the questions I have is editor agnostic...is crystalline the preferred LSP server?
George Dietrich
@Blacksmoke16
thats what i hear yes
Yeah, Scry has been around longer, but Crystalline seems to have more features and be more actively maintained.
From IRC (bridge bot)
@FromIRC
<mfiano> Great thanks
<mfiano> I'm happy to see vim-based does take a nice second place on that pie chart :⁠)
Benjamin Wade
@RespiteSage
You may already have this info, but there was a thread that includes some links to a vim plugin.
George Dietrich
@Blacksmoke16
From IRC (bridge bot)
@FromIRC
<mfiano> crystalline seems to support jumping to definition just fine. keeping a tags database seems un-needed just yet
Benjamin Wade
@RespiteSage
@Blacksmoke16 Just looked at oq_cli.cr. That's a solid pattern. It reminds me of factories in Java, just with less bloat.
George Dietrich
@Blacksmoke16
kinda yea, works quite well as the lib itself is decoupled from the CLI context
From IRC (bridge bot)
@FromIRC
<mfiano> That project seems to be structured well and very easy to read
<mfiano> (and nicely documented)
George Dietrich
@Blacksmoke16
i try :smiley:
From IRC (bridge bot)
@FromIRC
<mfiano> at least as a first real project I've seen
Jason Waldrip
@jwaldrip
Getting some weird behavior...
class Psykube::Generator::Podable < ::Psykube::Generator
  alias Resource = Pyrite::Api::Apps::V1::Deployment | Pyrite::Api::Batch::V1beta1::CronJob | Pyrite::Api::Batch::V1::Job | Pyrite::Api::Apps::V1::StatefulSet | Pyrite::Api::Apps::V1::DaemonSet | Pyrite::Api::Core::V1::Pod

  protected def result : Resource
    case manifest.type
    when "Deployment"
      Deployment.result(self)
    when "Cron"
      CronJob.result(self)
    when "Job"
      Job.result(self)
    when "StatefulSet"
      StatefulSet.result(self)
    when "DaemonSet"
      DaemonSet.result(self)
    when "Pod"
      Pod.result(self)
    else
      raise "Invalid type: `#{manifest.type}`"
    end
  end
end
given that... I am getting a strange error
George Dietrich
@Blacksmoke16
manifest.type should be an enum :)
Jason Waldrip
@jwaldrip
❯ shards build && mv bin/psykube `which psykube` --error-trace
Dependencies are satisfied
Building: psykube
Error target psykube failed to compile:
Showing last frame. Use --error-trace for full trace.

In src/cli/commands/concerns/kubectl.cr:139:20

 139 | spec = podable.spec
                      ^---
Error: undefined method 'spec' for Pyrite::Api::Admissionregistration::V1::MutatingWebhookConfiguration (compile-time type is Pyrite::Kubernetes::Object+)
George Dietrich
@Blacksmoke16
got a link to the code?
Jason Waldrip
@jwaldrip
ya, let me push
George Dietrich
@Blacksmoke16
does that spec method exist on all those types in the union?
Jason Waldrip
@jwaldrip
Let me double check
George Dietrich
@Blacksmoke16
it seems the type of that union is being collapsed into their parent Pyrite::Kubernetes::Object+ type which doesn't have that method
https://github.com/crystal-lang/crystal/issues/2661#issuecomment-877286921 is prob similar to what's going on ^ if i had to guess
Jason Waldrip
@jwaldrip
Which is strange... the return type method ensures the proper type is returned
or at least it should
George Dietrich
@Blacksmoke16
but you're doing a .as(Psykube::Generator::Podable::Resource)
where Resource is an alias to a union of other types
Jason Waldrip
@jwaldrip
so really I would have to case over each type in the union to get what I want
George Dietrich
@Blacksmoke16
or make use of overloads for specific types
Jason Waldrip
@jwaldrip
ya, let me see what I can do
Alex Kampa
@alex-kampa
Now here's a bit of a surprise:
puts [1, 2, 3, 4, 5].reduce(0) { |acc, i| acc = acc + 1 if i.to_s =~ /3/ }
Error: undefined method '+' for Nil (compile-time type is (Int32 | Nil))
George Dietrich
@Blacksmoke16
i think you need some parans
parens*
i think the if is making the type of acc possibly nil, because the return value of the block is used to set the acc
.reduce(0) { |acc, i| i.to_s =~ /3/ ? acc + i : acc }
is 3 the expected value here?
From IRC (bridge bot)
@FromIRC
<mfiano> Can someone ELI5 the ~> version operator?
George Dietrich
@Blacksmoke16
image.png
From IRC (bridge bot)
@FromIRC
<mfiano> I read that