rubygems/rubygems.org

View on GitHub
app/avo/resources/version_resource.rb

Summary

Maintainability
A
0 mins
Test Coverage
class VersionResource < Avo::BaseResource
  self.title = :full_name
  self.includes = [:rubygem]
  self.search_query = lambda {
    scope.where("full_name LIKE ?", "#{params[:q]}%")
  }

  action RestoreVersion
  action VersionAfterWrite

  class IndexedFilter < ScopeBooleanFilter; end
  filter IndexedFilter, arguments: { default: { indexed: true, yanked: true } }

  field :full_name, as: :text, link_to_resource: true
  field :id, as: :id, hide_on: :index, as_html: true do |_id, *_args|
    link_to model.id, main_app.rubygem_version_url(model.rubygem.slug, model.slug)
  end

  field :rubygem, as: :belongs_to
  field :slug, as: :text, hide_on: :index
  field :number, as: :text
  field :platform, as: :text

  field :canonical_number, as: :text

  field :indexed, as: :boolean
  field :prerelease, as: :boolean
  field :position, as: :number
  field :latest, as: :boolean

  field :yanked_at, as: :date_time, sortable: true

  field :pusher, as: :belongs_to, class: "User"
  field :pusher_api_key, as: :belongs_to, class: "ApiKey"

  tabs do
    tab "Metadata", description: "Metadata that comes from the gemspec" do
      panel do
        field :summary, as: :textarea
        field :description, as: :textarea
        field :authors, as: :textarea
        field :licenses, as: :textarea
        field :cert_chain, as: :textarea
        field :built_at, as: :date_time, sortable: true
        field :metadata, as: :key_value, stacked: true
      end
    end

    tab "Runtime information" do
      panel do
        field :size, as: :number, sortable: true
        field :requirements, as: :textarea
        field :required_ruby_version, as: :text
        field :sha256, as: :text
        field :required_rubygems_version, as: :text
      end
    end

    tab "API" do
      panel do
        field :info_checksum, as: :text
        field :yanked_info_checksum, as: :text
      end
    end

    field :dependencies, as: :has_many
    field :gem_download, as: :has_one, name: "Downloads"
    field :deletion, as: :has_one
  end
end