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

RolifyCommunity / rolify / 687
93%

Build:
DEFAULT BRANCH: master
Ran 27 Feb 2019 03:05PM UTC
Jobs 8
Files 37
Run time 198min
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

pending completion
687

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)

3 of 3 new or added lines in 2 files covered. (100.0%)

1607 of 1737 relevant lines covered (92.52%)

400.84 hits per line

Jobs
ID Job ID Ran Files Coverage
1 687.1 (2.6.1, ADAPTER=active_record, gemfiles/activerecord_4.gemfile) 27 Feb 2019 03:06PM UTC 0
92.47
Travis Job 687.1
2 687.2 (2.6.1, ADAPTER=active_record, gemfiles/activerecord_5.gemfile) 27 Feb 2019 03:06PM UTC 0
92.47
Travis Job 687.2
3 687.3 (2.5.3, ADAPTER=active_record, gemfiles/activerecord_4.gemfile) 27 Feb 2019 03:05PM UTC 0
92.47
Travis Job 687.3
4 687.4 (2.5.3, ADAPTER=active_record, gemfiles/activerecord_5.gemfile) 27 Feb 2019 03:06PM UTC 0
92.47
Travis Job 687.4
5 687.5 (2.4.5, ADAPTER=active_record, gemfiles/activerecord_4.gemfile) 27 Feb 2019 03:06PM UTC 0
92.47
Travis Job 687.5
6 687.6 (2.4.5, ADAPTER=active_record, gemfiles/activerecord_5.gemfile) 27 Feb 2019 03:09PM UTC 0
92.47
Travis Job 687.6
7 687.7 (2.3.8, ADAPTER=active_record, gemfiles/activerecord_4.gemfile) 27 Feb 2019 03:10PM UTC 0
92.47
Travis Job 687.7
8 687.8 (2.3.8, ADAPTER=active_record, gemfiles/activerecord_5.gemfile) 27 Feb 2019 03:09PM UTC 0
92.47
Travis Job 687.8
Source Files on build 687
  • Tree
  • List 0
  • Changed 3
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Travis Build #687
  • 199ca1e6 on github
  • Prev Build on master (#684)
  • Next Build on master (#697)
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

© 2025 Coveralls, Inc