If the core value is important, you can create a module that you use as enum
module Groups ADMIN = 1 BOSS = 2 CLERK = 4 MEAT = 8 BREAD = 16 CHEESE = 32 end
To set permissions only bitwise or together
permissions = Groups::BOSS | Groups::MEAT | Groups::CHEESE
and to check that you are doing bitwise and
>> permissions & Groups::CHEESE > 0 => true >> permissions & Groups::BREAD > 0 => false
I also like how you can make real bitmasks more readable with _ like this
permissions = 0b0010_1010
source share