-
Notifications
You must be signed in to change notification settings - Fork 14k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
wip: add Ruby project management lesson #27128
Conversation
@JoshDevHub Rough, rough draft here. Don't be afraid to pull any punches. I still have to figure out the knowledge checks and additional resources. |
@scheals Awesome I'll have a look. Also going to cc: @ChargrilledChook because I believe he's interested in having a look at this work as well. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Really cool stuff. It'll be awesome to have this in.
Have a few comments and nits here and there. Also make sure to cleanup the complaints that the new Markdown Linter has.
Main concerns for me are:
- What is the larger plan around introducing Ruby-LSP? You seem to reference something in this content that I currently can't find.
- How much do we want to go into talking about libraries and managing gems? I think it's very important to introduce because learners will be using RSpec, Ruby-LSP, the debugger, and Rubocop throughout the Ruby course. And that stuff can be very mysterious if they know literally nothing about what's going on with bundler and RubyGems. But I also think we can keep the introduction to this content a bit simpler than what you have here.
But yeah let me know what you think! And let me know if you have any questions/concerns.
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
Since I had to update the Debugging lesson's assignment, I decided to give it a very, very basic touch up so learners don't get confused. a170f5d. I'll get all the linting in place at the very end. It might be good to investigate issues with pry since users are having issues with |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking good. Just one comment about the debug section.
I'll try to get back to you soon about the gem versions stuff.
Took the liberty to change one additional resource and introduce a introductory talk by one of debug's maintainers. |
Since the lesson overview promises that the learner will get to know what |
226172a
to
3102314
Compare
Added knowledge checks, decided on the additional resources and did some cleaning up there and there to satisfy the linter. We have some loose ends in the conversations but after we tie them up the lesson should be ready to go when the Rubocop one also gets written. EDIT: Just now remembered that I probably should not be rebasing/amending/squashing stuff while still working on the PR. Apologies. |
Sorry for my sluggishness on reviewing this. I'll get my thoughts in on the current state of it by the end of the week. |
No worries. There was still work that I had to do and couldn't do it earlier. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really like this.
I think I've softened a bit on semver and am okay with it being here. It doesn't take up that much space and your explanations are good.
I've included a round of super small grammar and punctuation nits to fix, but I don't have any large points of feedback. I'll probably ask another Ruby/Rails maintainer to look over this content just because it is a significant change, but then I think we'll be fine to merge.
I think it's probably a good idea to hold off on actually adding it to the curriculum until I can get the rubocop stuff done. I'm still working on that, but hopefully will have some work to show soon.
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
2.5.4 | ||
``` | ||
|
||
<span id="gemfile">There's not much in those but as you can see,</span> the `Gemfile` has information on where to get the gems from and what gems are required. The `"~> 1.1"` is something called a version constraint, particularly one called pessimistic constraint. It relies on semantic versioning - basically, the first number is the major version, second is the minor version and a third, if it exists is the patch number. Major versions can break things from previous versions - think changing method names for example. Minor versions can add and change things but they can't break anything. Patches happen when you introduce bug fixes that don't break anything. So, if people behind a gem maintain it in line with semantic versioning, you can rely on this pessimistic constraint never letting your project have a gem version that could potentially break your app - it is equivalent to `gem "colorize", ">= 1.1", "<2.0"`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<span id="gemfile">There's not much in those but as you can see,</span> the `Gemfile` has information on where to get the gems from and what gems are required. The `"~> 1.1"` is something called a version constraint, particularly one called pessimistic constraint. It relies on semantic versioning - basically, the first number is the major version, second is the minor version and a third, if it exists is the patch number. Major versions can break things from previous versions - think changing method names for example. Minor versions can add and change things but they can't break anything. Patches happen when you introduce bug fixes that don't break anything. So, if people behind a gem maintain it in line with semantic versioning, you can rely on this pessimistic constraint never letting your project have a gem version that could potentially break your app - it is equivalent to `gem "colorize", ">= 1.1", "<2.0"`. | |
<span id="gemfile">There's not much in those but as you can see,</span> the `Gemfile` has information on where to get the gems from and what gems are required. The `"~> 1.1"` is something called a version constraint, particularly one called pessimistic constraint. It relies on semantic versioning - basically, the first number is the major version, second is the minor version and a third, if it exists, is the patch number. Major versions can break things from previous versions - think changing method names for example. Minor versions can add and change things but they can't break anything. Patches happen when you introduce bug fixes that don't break anything. So, if people behind a gem maintain it in line with semantic versioning, you can rely on this pessimistic constraint never letting your project have a gem version that could potentially break your app - it is equivalent to `gem "colorize", ">= 1.1", "<2.0"`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would this be a good comma to add too? 🤔
O-K, all the suggestions committed, lint problem fixed, another comma to think about aand that's it. Let me know if you want me to squash the commits. And yeah, I'd not add the lesson until the Rubocop one also is ready for release. If you need any help or would appreciate eyes on it, let me know. I'd love to help :D |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice work with this @scheals, I think this is going to fill a very big hole in the Ruby course 🚀
Only major (nitpicky) gripe is usage of foo
and bar
in the examples lol. They tend to be overused in programming tutorials and can be hard to relate to.
We actually went out of our way to avoid using them when rewriting the basic ruby section 😆. Is there anything else we could use?
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
ruby/object_oriented_programming_basics/managing_ruby_projects.md
Outdated
Show resolved
Hide resolved
There's a merge conflict to solve, some linter stuff to fix afterwards (I think) but that'll be for tomorrow. Content changed, swapped, upgraded overall, made better thanks to y'all. Some threads still need to be discussed. |
@JoshDevHub |
Co-authored-by: Josh Smith <[email protected]>
Co-authored-by: Josh Smith <[email protected]>
Co-authored-by: Josh Smith <[email protected]>
Co-authored-by: Josh Smith <[email protected]>
Co-authored-by: Josh Smith <[email protected]>
Co-authored-by: Josh Smith <[email protected]>
Co-authored-by: Josh Smith <[email protected]>
Co-authored-by: Kevin <[email protected]>
Co-authored-by: Kevin <[email protected]>
Co-authored-by: Kevin <[email protected]>
Co-authored-by: Kevin <[email protected]>
Co-authored-by: Kevin <[email protected]>
Co-authored-by: Kevin <[email protected]>
Co-authored-by: Kevin <[email protected]>
Co-authored-by: Kevin <[email protected]>
Co-authored-by: Kevin <[email protected]>
Because
The Ruby course has not covered how to structure your projects or what gems and Bundler are. Our hand was somewhat forced by the change in default Ruby extension for VSCode getting deprecated and Ruby LSP becoming the new default. It expects a
Gemfile.lock
file to run and will pester the user for what it should do when it doesn't see it. Additionally, it reads RuboCop off theGemfile
(Gemfile.lock
? not sure) as well, so to enable linting and formatting features, the learners also need to know how to use Bundler.This PR
and that it is followed by a Rubocop/Linting lesson Ruby Course: Add Rubocop / Linting Lesson #27091
Issue
Closes #27026
Additional Information
Pull Request Requirements
location of change: brief description of change
format, e.g.Intro to HTML and CSS lesson: Fix link text
Because
section summarizes the reason for this PRThis PR
section has a bullet point list describing the changes in this PRIssue
section