开发者

Expose function in ruby on rails

开发者 https://www.devze.com 2023-03-09 14:29 出处:网络
I am looking at a rails app and at the top of every controller there is a block of code that looks something like this

I am looking at a rails app and at the top of every controller there is a block of code that looks something like this

expose(:var) {Model.find params[:var_id]}

I understand what is inside the block just fine but...

I cannot find any documentation on what the expose function does where it comes from or anything I have tried searching the project and using the search开发者_开发知识库able rails docs.

I would love to know what it does, can someone please tell me or point me to the docs.


This is probably referencing the decent_exposure gem. You can learn more about it here: http://railscasts.com/episodes/259-decent-exposure

Source: https://github.com/voxdolo/decent_exposure


It's a method from the Decent Exposure gem. You can check out a screencast that Ryan Bates did on it over at Railscasts. It's a really great gem. I use it in my application. It cuts down on a lot of the redundancy in the controller layer.


expose is not a part of Rails, it comes from the decent_exposure gem.


It is not an answer to the question. I just want to make the Rails world a bit better and I hope that somebody will read this.

Please think twice before using expose. You should only use it if you 100% sure you are using it the right way and it really makes the code better. Read the documentation properly!

One of projects I worked on became unmaintainable because of tons of expose in controllers which replaced not only all @instance_variables passed to views, but also a lot of business logic and the most helper methods.

When you use expose it is not clear in which controller actions and in which views it is used. Unexperienced developers combine data and logic for multiple actions and multiple views in the same expose block. That's a nightmare.

Believe me, expose really destroys projects if not used properly.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号