DEV Community

Cover image for My first DEV PR and post!
Glenn Carremans
Glenn Carremans

Posted on • Updated on

My first DEV PR and post!

Yesterday my very first DEV PR got merged!
I didn't have any experience in Ruby so I wanted to do something easy, I came across this Issue/Feature request from @jess .

3 year badge #1562

Is your feature request related to a problem? Please describe. Let's award 3 year badges when members hit their 3 year mark!

Even though the Issue wasn't approved yet I felt pretty confident that it wouldn't be an issue because it was a suggestion from a DEV co-founder 😂

The PR itself was fairly easy, I could base my code on the already available 2 year anniversary badge with little changes required.

Added 3 year anniversary badge #1732

What type of PR is this? (check all applicable)

  • [ ] Refactor
  • [X] Feature
  • [ ] Bug Fix
  • [ ] Documentation Update

Description

Added 3 year anniversary badge, I hope to get this badge some day 😉 Btw this is the very first time I ever did anything in Ruby so please let me know if I did anything wrong.

Related Tickets & Documents

Closes #1562

Mobile & Desktop Screenshots/Recordings (if there are UI changes)

Added to documentation?

  • [ ] docs.dev.to
  • [ ] readme
  • [X] no documentation needed

[optional] What gif best describes this PR or how it makes you feel?

happy birthday

After that the PR got reviewed and merged very quickly by @ben .

I hope to stay in this awesome community long enough to receive this badge!


This is my very first blog post on DEV (and first blog post in general) I hope to not only lurk and comment but in the future make more blog posts, also a little more technical posts.


And besides my very first DEV PR and post I have also received my very first DEV Badge! 🎉

Discussion (13)

Collapse
ben profile image
Ben Halpern

This was one of those tasks I was sure we were going to put off for way too long.

We still don't have a four-year badge designed, but I feel like this part of the code now could probably be refactored to account for an arbitrary number of years, and maybe take an environment variable to determine how many to iterate through.

Anyone who wants to refactor this so we don't need to add a new method every year is welcome to submit another PR at some point in the next 11 or so months. 😄

Collapse
glennmen profile image
Glenn Carremans Author

Interesting, this would indeed be a good improvement to be more future proof. Only thing you still would need to do is prepare the designs for the upcoming years but you could make a couple at once so you will be good for a few years 😉

I am triggered by this challenge but am afraid that my knowledge in Ruby isn't good enough right now.

Collapse
link2twenty profile image
Andrew Bone • Edited on

I'd guess something like this

def self.award_x_year_badges(x)
  @n = {1=>"one", 2=>"two", 3=>"three",4=>"four", 5=>"five", 6=>"six", 7=>"seven", 8=>"eight", 9=>"nine", 10=>"ten"}
  s = x == 1 ? "" : "s"
  message = "Happy DEV birthday! Can you believe it's been #{@n[x]} year#{s} already?!"
  User.where("created_at < ? AND created_at > ?", (x).year.ago, (x * 365 + 2).days.ago).find_each do |user|
    achievement = BadgeAchievement.create(
      user_id: user.id,
      badge_id: Badge.find_by_slug("#{@n[x]}-year-club").id,
      rewarding_context_message_markdown: message,
    )
    user.save if achievement.valid?
  end
end

for x in 1..10
  self.award_x_year_badges(x)
end

Though I don't really know ruby either 😅

I'm not sure this line would work as expected

User.where("created_at < ? AND created_at > ?", (x).year.ago, (x * 365 + 2).days.ago).find_each do |user|
Collapse
itachiuchiha profile image
Itachi Uchiha • Edited on

This week my second dev.to pr merged. I’m so happy. This makes me feel better. Being part of the dev.to contributors is awesome.

Thanks @ben

Collapse
dechamp profile image
DeChamp

dude!! So awesome! You totally encouraged me to try this myself. I literally looks at the repo the other day and was going to fix an issue (also not a ruby dev) but I was like... no they probably won't want me to. Thanks to you, I know I should!

Collapse
glennmen profile image
Glenn Carremans Author

Awesome! I never expected that I was going to encourage anyone to contribute with my small PR and post 😂 But so happy that I did!
I thought the same in the past with a Node project (cdnjs.com) after a year, during Hacktoberfest, I finally did it and it was a lot of fun. I have tried different small projects/tweaks in the past, python, node and now ruby, always fun to step out of your comfort zone and just mess around.

Collapse
dechamp profile image
DeChamp

Ya! you made a big step today. I was blown away by what happens when you put yourself out there. It helps others, so thank you!

Collapse
nickytonline profile image
Nick Taylor

Congrats Glenn on getting your first PR merged! 🔥

Collapse
glennmen profile image
Glenn Carremans Author

Thanks! It wasn't that big of a change and I am sure anyone could have done it but it still feels great to be able to contribute to this community.

Collapse
jamesmh profile image
James Hickey

Good stuff!

Collapse
kyleboe profile image
Kyle Boe

Nice! I had one merged a couple weeks ago too. Feels good man.

Welcome to the PR-ty ! ☜(゚ヮ゚☜)

I'll_see_myself_out_

Collapse
glennmen profile image
Glenn Carremans Author

Awesome PR! Everyone needs a little music in their life 😉

Collapse
azelalynetan profile image
Azel Tan

Congrats!! Keep it up and treasure that feeling to keep going :)