• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

RolifyCommunity / rolify / 687 / 1
93%
master: 93%

Build:
DEFAULT BRANCH: master
Ran 27 Feb 2019 03:06PM UTC
Files 37
Run time 90min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

27 Feb 2019 03:03PM UTC coverage: 92.471% (+0.2%) from 92.259%
2.6.1, ADAPTER=active_record, gemfiles/activerecord_4.gemfile

push

travis-ci

EppO
<a href="https://github.com/RolifyCommunity/rolify/commit/<a class=hub.com/RolifyCommunity/rolify/commit/199ca1e602da831cc06e37d36e820ba26ac65970">199ca1e60<a href="https://github.com/RolifyCommunity/rolify/commit/199ca1e602da831cc06e37d36e820ba26ac65970">&quot;&gt;Significantly optimize #without_role (#500)

* :scissors: remove some obsolete code

since https://github.com/RolifyCommunity/rolify/commit/&lt;/a&gt;&lt;a class=&quot;double-link&quot; href=&quot;https://github.com/RolifyCommunity/rolify/commit/&amp;lt;a class=&amp;quot;double-link&amp;quot; href=&amp;quot;https://git&quot;&gt;&amp;lt;a class=&lt;/a&gt;hub.com/RolifyCommunity/rolify/commit/&amp;lt;a class=&amp;quot;double-link&amp;quot; href=&amp;quot;https://git">&lt;a class=</a>hub.com/RolifyCommunity/rolify/commit/&lt;a class=&quot;double-link&quot; href=&quot;https://git">&lt;a class=</a>hub.com/RolifyCommunity/rolify/commit/<a class=hub.com/RolifyCommunity/rolify/commit/<a class="double-link" href="https://git"><a class=hub.com/RolifyCommunity/rolify/commit/522c0d7d84a70dd3576b569edf19f9f6cb118a61">522c0d7d8">522c0d7d8</a><a href="https://github.com/RolifyCommunity/rolify/commit/199ca1e602da831cc06e37d36e820ba26ac65970"> Rails &lt; 4 is no longer supported

* significantly optimize #without_role

Imagine a big production application with millions of users.

The previous version generates 3 queries for `User.without_role(:admin)`:
1) For `user.all` in [`#all_except`](https://github.com/RolifyCommunity/rolify/blob/522c0d7d84a70dd3576b569edf19f9f6cb118a61/lib/rolify/adapters/active_record/role_adapter.rb#L83):
```sql
SELECT &quot;users&quot;.* FROM &quot;users&quot;
```
2) For `self.with_role(role_name, resource)` in [`#without_role`](https://github.com/RolifyCommunity/rolify/blob/522c0d7d84a70dd3576b569edf19f9f6cb118a61/lib/rolify/finders.rb#L8):
```sql
SELECT &quot;users&quot;.* FROM &quot;users&quot; INNER JOIN &quot;users_roles&quot; ON &quot;users_roles&quot;.&quot;user_id&quot; = &quot;users&quot;.&quot;id&quot; INNER JOIN &quot;roles&quot; ON &quot;roles&quot;.&quot;id&quot; = &quot;users_roles&quot;.&quot;role_id&quot; WHERE (((roles.name = &#39;admin&#39;) AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))
```
3) For `user.where(prime_key =&gt; (user.all - excluded_obj).map(&amp;prime_key))` in [`#all_except`](https://github... (continued)

1609 of 1740 relevant lines covered (92.47%)

49.86 hits per line

Source Files on job 687.1 (2.6.1, ADAPTER=active_record, gemfiles/activerecord_4.gemfile)
  • Tree
  • List 0
  • Changed 3
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 678
  • Travis Job 687.1
  • 199ca1e6 on github
  • Prev Job for 2.6.1, ADAPTER=active_record, gemfiles/activerecord_4.gemfile on master (#684.1)
  • Next Job for 2.6.1, ADAPTER=active_record, gemfiles/activerecord_4.gemfile on master (#697.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc