Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Boring Ruby Code

Adam Niedzielski
June 14, 2017
35

Boring Ruby Code

Hamburg on Ruby June 2017

Adam Niedzielski

June 14, 2017
Tweet

Transcript

  1. @niedzielskiadam blog.sundaycoding.com def initialize(options) %w(id name path size data mode

    commit_id binary).each do |key| self.send("#{key}=", options[key.to_sym]) end end
  2. @niedzielskiadam blog.sundaycoding.com def initialize(options) %w(id name path size data mode

    commit_id binary).each do |key| self.send("#{key}=", options[key.to_sym]) end end
  3. @niedzielskiadam blog.sundaycoding.com %i(call to_document to_html).each do |meth| define_method(meth) do |text,

    context| context = transform_context(context) html_pipeline.send(meth, text, context) end end
  4. @niedzielskiadam blog.sundaycoding.com %i(call to_document to_html).each do |meth| define_method(meth) do |text,

    context| context = transform_context(context) html_pipeline.send(meth, text, context) end end
  5. @niedzielskiadam blog.sundaycoding.com def call(text, context) context = transform_context(context) html_pipeline.call(text, context)

    end def to_document(text, context) context = transform_context(context) html_pipeline.to_document(text, context) end def to_html(text, context) context = transform_context(context) html_pipeline.to_html(text, context) end
  6. @niedzielskiadam blog.sundaycoding.com %i(call to_document to_html).each do |meth| define_method(meth) do |text,

    context| context = transform_context(context) html_pipeline.send(meth, text, context) end end
  7. @niedzielskiadam blog.sundaycoding.com %i(original_position position).each do |meth| define_method "#{meth}=" do |new_position|

    if new_position.is_a?(String) new_position = JSON.parse(new_position) rescue nil end if new_position.is_a?(Hash) new_position = new_position.with_indifferent_access new_position = Gitlab::Diff::Position.new(new_position) end super(new_position) end end
  8. @niedzielskiadam blog.sundaycoding.com %i(original_position position).each do |meth| define_method "#{meth}=" do |new_position|

    if new_position.is_a?(String) new_position = JSON.parse(new_position) rescue nil end if new_position.is_a?(Hash) new_position = new_position.with_indifferent_access new_position = Gitlab::Diff::Position.new(new_position) end super(new_position) end end
  9. @niedzielskiadam blog.sundaycoding.com def method_missing(m, *args, &block) if m == :lookup

    && !block_given? lookup_cache[m] ||= {} lookup_cache[m][args.join(":")] ||= raw_repository.send(m, *args, &block) else raw_repository.send(m, *args, &block) end end
  10. @niedzielskiadam blog.sundaycoding.com def method_missing(m, *args, &block) if m == :lookup

    && !block_given? lookup_cache[m] ||= {} lookup_cache[m][args.join(":")] ||= raw_repository.send(m, *args, &block) else raw_repository.send(m, *args, &block) end end
  11. @niedzielskiadam blog.sundaycoding.com def method_missing(m, *args, &block) if m == :lookup

    && !block_given? lookup_cache[m] ||= {} lookup_cache[m][args.join(":")] ||= raw_repository.send(m, *args, &block) else raw_repository.send(m, *args, &block) end end
  12. @niedzielskiadam blog.sundaycoding.com def project_icon(project_id, options = {}) project = if

    project_id.is_a?(Project) project_id else Project.find_by_full_path(project_id) end end
  13. @niedzielskiadam blog.sundaycoding.com def project_icon(project_id, options = {}) project = if

    project_id.is_a?(Project) project_id else Project.find_by_full_path(project_id) end end
  14. @niedzielskiadam blog.sundaycoding.com def initialize(repository, name, target) encode! name @name =

    name.gsub(/\Arefs\/(tags|heads)\//, '') @dereferenced_target = Gitlab::Git::Commit.find(repository, target) @target = if target.respond_to?(:oid) target.oid elsif target.respond_to?(:name) target.name elsif target.is_a? String target else nil end end
  15. @niedzielskiadam blog.sundaycoding.com def initialize(repository, name, target) encode! name @name =

    name.gsub(/\Arefs\/(tags|heads)\//, '') @dereferenced_target = Gitlab::Git::Commit.find(repository, target) @target = if target.respond_to?(:oid) target.oid elsif target.respond_to?(:name) target.name elsif target.is_a? String target else nil end end
  16. @niedzielskiadam blog.sundaycoding.com def initialize(repository, name, target) encode! name @name =

    name.gsub(/\Arefs\/(tags|heads)\//, '') @dereferenced_target = Gitlab::Git::Commit.find(repository, target) @target = if target.respond_to?(:oid) target.oid elsif target.respond_to?(:name) target.name elsif target.is_a? String target else nil end end
  17. @niedzielskiadam blog.sundaycoding.com def find(repo, commit_id = "HEAD") return commit_id if

    commit_id.is_a?(Gitlab::Git::Commit) return decorate(commit_id) if commit_id.is_a?(Rugged::Commit) obj = if commit_id.is_a?(String) repo.rev_parse_target(commit_id) else Gitlab::Git::Ref.dereference_object(commit_id) end return nil unless obj.is_a?(Rugged::Commit) decorate(obj) end
  18. @niedzielskiadam blog.sundaycoding.com def find(repo, commit_id = "HEAD") return commit_id if

    commit_id.is_a?(Gitlab::Git::Commit) return decorate(commit_id) if commit_id.is_a?(Rugged::Commit) obj = if commit_id.is_a?(String) repo.rev_parse_target(commit_id) else Gitlab::Git::Ref.dereference_object(commit_id) end return nil unless obj.is_a?(Rugged::Commit) decorate(obj) end