inflection
zeitwerk
inflection | zeitwerk | |
---|---|---|
2 | 9 | |
481 | 1,918 | |
- | - | |
2.5 | 7.4 | |
9 months ago | 23 days ago | |
Python | Ruby | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
inflection
-
To Ruby from Python
> Could you elaborate on this
I think it's more than evaluating each feature in isolation like migrations, ORM, template engine, etc..
As much as I like Python (I use Flask a lot too besides Rails), I always found Rails to include more useful features for building web applications than Django. There's lots of examples but Rails' inflector is one of them. This happens all the time in web apps, which is wanting to output "1 person" or "2 people". Rails give you a template helper for this. Python has options in the form of third party tools like https://github.com/jpvanhal/inflection, but would you rather pull in a third party tool that hasn't been updated in 2+ years or use a solution maintained by a group of folks who are building web apps used by millions of people and then extracted those features into a framework?
The APIs in Rails feel more intuitive to me (super opinion based of course), but it's like someone tried 10 different variants in a few large web apps, tinkered with it for a while, arrived at a solution and that's the one that ships with Rails. There's so much thought put into everything and you know when it's released it's been put through the ringer at Basecamp, Hey, GitHub and Shopify because those sites all run off Rails master. That's a massive amount of confidence that it'll for you too, and the best part is you get to benefit from that on day 1 when a new stable release is shipped.
It's not that Django is bad or unstable but in my opinion if I were looking to use a batteries included framework I wouldn't look anywhere else besides Rails. It's just one of those things where it feels like a really good combination of things all came together (Ruby, Matz, DHH, Basecamp, lots of sites using it, enough community support to find blog posts for tons of stuff, great third party SDK support, etc.). You could say a number of languages have similar traits but they lack the first 4 things which are IMO the most important.
-
PyHeck: I wrote a fast case conversion library with just 106 lines of Rust code
PyHeck is 5-10x faster than the established case conversion library, inflection.
zeitwerk
-
Enhancing development with REPLs - A practical guide
To setup it's pretty simple, you just need to create a file inside bin/console and require all the files you want to use on a REPL, most of the times we use gems like zeitwerk to provide the auto requiring, but if you want to do it manually, refer to the example below:
-
Performance e elegância! Escrevendo uma CLI CRUD utilizando ScyllaDB e Ruby
zeitwerk
-
How to Load Code in Ruby
Zeitwerk takes a directory and makes every file underneath it available to load. The convention is that every new sub-directory is a new module, and every file defines a class with the same name as the file.
-
To Ruby from Python
There is a gem that does that used by Rails and multiple other gems:
https://github.com/fxn/zeitwerk
It is pretty easy to set it up in any Ruby project.
-
PHP – The Right Way
I actually prefer auto-loading, which lets you iterate through a package manager much easier/faster - PHP iterated through PSR-0[0] before landing on PSR-4[1], and you can always build your own (which is what most frameworks pre-composer were doing).
With Rails 7 and Zeitwerk, the Ruby community has landed on a very similar auto-loading system as PHP now[2] with constants translating to paths by convention.
[0]: https://github.com/php-fig/fig-standards/blob/master/accepte...
[1]: https://www.php-fig.org/psr/psr-4/
[2]: https://github.com/fxn/zeitwerk#the-idea-file-paths-match-co...
-
One Class/Module per File Rules - Working With Nested Modules
If you're working on non-Rails apps and need to deal with loading code, zeitwerk can be used anywhere, unlike the old Rails autoloader. It's also really easy to set up.
-
Move models, views and controllers to non-standard folders
https://github.com/fxn/zeitwerk#collapsing-directories
-
Code Loaders in Ruby: Understanding Zeitwerk
Zeitwerk
-
Ruby on Rails + Auth0: Authenticating your API with an external authentication service
With a few modifications in the gem source code, we could easily integrate Auth0 into our Rails API, but that on Rails 5. Rails 6 brought Zeitwerk code loader together, which makes it harder to perform the alterations suggested in my previous post.
What are some alternatives?
SpriteKit+Spring - SpriteKit API reproducing UIView's spring animations with SKAction
jets - Ruby on Jets [Moved to: https://github.com/rubyonjets/jets]
heck - oh heck, a case conversion library
JWT - A ruby implementation of the RFC 7519 OAuth JSON Web Token (JWT) standard.
pyheck - Python bindings for heck, the Rust case conversion library
Karafka - Ruby and Rails efficient multithreaded Kafka processing framework
R.swift - Strong typed, autocompleted resources like images, fonts and segues in Swift projects
unholy - a ruby-to-pyc compiler
unholy - a ruby-to-pyc compiler - _why mirror
dry-system - Application framework with state management and built-in dependency injection support
Ruby on Rails - Ruby on Rails