Comments (12)
The documentation change is merged
from sorbet-rails.
from sorbet-rails.
You're totally right.
I think I've managed to fix it by moving gem 'sorbet-rails'
on the Gemfile
from the group :development
block to the general group.
Thanks a lot!
from sorbet-rails.
I have sorbet-rails in the general group, but I receive the same issue with private constant being referenced.
EDIT: I notice that in development mode, the inherited hook does not fire, while in production mode it does. Guessing it's because of eager_load?
from sorbet-rails.
I can confirm that moving it to the general group fixed the issue for me. Besides the code is now running on CI and on production with some MyModel::ActiveRecord_Association
typed methods.
@International what I did to see what was happening on my case was to:
bundle open sorbet-rails
Go to the railties file and add a byebug
on the inherited hook.
Then starting the rails console on development
(where it worked) and on test
, where it didn't. That way I realised what the issue was.
Not sure it can help you debug your case... but you never know!
Guessing it's because of eager_load
I doubt that could be the case, take into account that these patches sorbet-rails
do are hooked to certaing loading events which are fired when things like ActiveRecord::Base
load. It would mean that your app isn't loading those, which would be really weird.
If you wanted to confirm you could add an initializer in the same fashion as sorbet-rails
does and check if it gets called or not.
from sorbet-rails.
Hi @franciscoj , thanks for the tip, I did that :)
On one side, what I noticed is that the hook only gets called for about 10 out of 200 models, in development mode, on the other it looks like the railtie should probably be required kind of early so that models coming from gems would also get the hook?
I noticed that also for models defined in gems, the constant is private.
from sorbet-rails.
I noticed that also for models defined in gems, the constant is private.
AFAIK for models coming from gems you need to use plugins, like the ones described here https://github.com/chanzuckerberg/sorbet-rails#enabling-built-in-plugins
But I'm afraid I don't know how to add new ones or create your own plugins.
from sorbet-rails.
I will try to play around with load order, see if I can force it to get it loaded. Let you know what I find. Thanks
from sorbet-rails.
from sorbet-rails.
from sorbet-rails.
from sorbet-rails.
FYI there is a PR to improve the documentation around this #214
from sorbet-rails.
Related Issues (20)
- Feature: Re-generate model RBIs on db:migrate HOT 2
- Feature: custom methods on associations.
- Signatures not generated for models using new ActiveRecord::DelegatedType
- Has_many with scope on association HOT 2
- Decide whether to drop Ruby 2.4 and Ruby 2.5 HOT 2
- Feature Request: --verify option for CI HOT 1
- FR: helper_generator_class
- Method object does not exist on ActionView::Helpers::FormBuilder HOT 1
- Don't know how to build task 'rails_rbi:routes' HOT 1
- Unable to resolve constant BatchEnumerator HOT 1
- Enum override in ActiveRecordOverrides breaks with Rails 7 HOT 5
- Lots of T.nilable(T.untyped) errors after sorbet 0.5.9556
- Classic Loader issues with srb init HOT 1
- warning: already initialized constant RAILS_RBI_RAKE_DIR
- regression on update to sorbet 0.5.9892+ HOT 1
- `rails_rbi:jobs` raise unknown prefix error HOT 2
- Model with `enum` raises `ArgumentError: wrong number of arguments (given 3, expected 1)`
- Type check errors in generated RBI files HOT 2
- Readme typo custom -> controllers ?
- `pluck_to_tstruct` assigns plucked values to the wrong tstruct keys depending on the order in which the tstruct props for associations are listed
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sorbet-rails.