This site is made for World of Warcraft players who want to improve by tracking their performance across raid encounters, based on key metrics for their spec.
It is designed primarily for those who want to improve their basic rotation. It probably will not provide enough information to be useful to advanced players who are already very comfortable with their classes and are now trying to maximize their output.
To run the site you need ruby >= 2.2 and rails >= 4.2
gem install bundler
bundle install
bundle exec rake db:migrate
bundle exec rails s -p 3000
You can now see the site in your browser at http://localhost:3000
Visit http://localhost:3000/zones
to get the latest list of raid zones and bosses from Warcraft Logs.
Check my Wow uses a pool of Resque threads to process fights in the background. Run the following command to start the processes:
TERM_CHILD=1 RESQUE_TERM_TIMEOUT=10 LOGGING=1 bundle exec resque-pool -E development
Now you should be able to process fights normally.
Logs will be outputted to log/resque.log
, and you can see a dashboard of the current running tasks at localhost:3000/resque
app/jobs/
contains the Resque processes that do all of the parsing. parser.rb
grabs entire reports from WCL and single_parser.rb
parses a single fight/player. SingleParser takes each relevant event and passes it to the spec's FightParse class, which will perform any necessary calculations.
app/models/fight_parse.rb
holds all of the common logic for all classes when parsing fights. Things like keeping track of DPS, the number of times each spell was cast, watching for buffs, are all contained here. app/models/healer_parse.rb
has extra functions common to healers, and app/models/tank_parse.rb
has extra functions common to healers. Class-specific logic is in app/models/fight_parse/{class}/{spec}
where there is a class for each unique spec in the game.
fight_parse_records
will have one record for each person in each encounter, and has basic information about the player and the encounter. Once a fight is parsed, all of the numbers will saved in fp_{class}_{spec}
. When tracking what happens during a certain buff's uptime, there will be one cooldown_parse
record for each instance the buff was active. For simply tracking uptimes/downtimes throughout the fight, one record per ability will be created in buff_parses
or debuff_parses
.
Previously, each spec had folders in app/views/bosses
and app/views/fight_parses
that defined the data that is shown in the completed analysis. I started migrating to a new model where app/models/display_section/{class}/{spec}
will contain a list of methods that can populate a page template (app/views/show_data.html.erb
) with the correct data. I didn't finish migrating all specs, so some logic is still in app/views/bosses
and app/views/fight_parses
.