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

Boring Ruby Code

Avatar for Adam Niedzielski Adam Niedzielski
June 14, 2017
37

Boring Ruby Code

Hamburg on Ruby June 2017

Avatar for Adam Niedzielski

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