Skip to content

Latest commit

 

History

History
121 lines (89 loc) · 3.13 KB

CONTRIBUTING.md

File metadata and controls

121 lines (89 loc) · 3.13 KB

Issue Guidelines

  1. Issues should only be created for things that are definitely bugs. If you are not sure that the behavior is a bug, ask about it on the ruby-shrine Google Group.

  2. If you are sure it is a bug, then post a complete description of the issue, the simplest possible self-contained example showing the problem (see Sequel/ActiveRecord templates below), and the full backtrace of any exception.

Pull Request Guidelines

  1. Try to include tests for all new features and substantial bug fixes.

  2. Try to include documentation for all new features. In most cases this should include RDoc method documentation, but updates to the README is also appropriate in some cases.

  3. Follow the style conventions of the surrounding code. In most cases, this is standard ruby style.

Running tests

The test suite requires that you have the following installed:

If you're using Homebrew, you can just run brew bundle. The test suite is best run using Rake:

$ rake test

Code of Conduct

Everyone interacting in the Shrine project’s codebases, issue trackers, chat rooms, and mailing lists is expected to follow the Shrine code of conduct.

Appendix A: Sequel template

require "sequel"
require "shrine"
require "shrine/storage/file_system"
require "tmpdir"
require "down"

Shrine.storages = {
  cache: Shrine::Storage::FileSystem.new(File.join(Dir.tmpdir, "shrine")),
  store: Shrine::Storage::FileSystem.new(File.join(Dir.tmpdir, "shrine")),
}

Shrine.plugin :sequel

class MyUploader < Shrine
  # plugins and uploading logic
end

DB = Sequel.sqlite # SQLite memory database
DB.create_table :posts do
  primary_key :id
  column :image_data, :text
end

class Post < Sequel::Model
  include MyUploader::Attachment.new(:image)
end

post = Post.create(image: Down.download("https://example.com/image-from-internet.jpg"))

# Your code for reproducing

Appendix B: ActiveRecord template

require "active_record"
require "shrine"
require "shrine/storage/file_system"
require "tmpdir"
require "down"

Shrine.storages = {
  cache: Shrine::Storage::FileSystem.new(File.join(Dir.tmpdir, "shrine")),
  store: Shrine::Storage::FileSystem.new(File.join(Dir.tmpdir, "shrine")),
}

Shrine.plugin :activerecord

class MyUploader < Shrine
  # plugins and uploading logic
end

ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
ActiveRecord::Base.connection.create_table(:posts) { |t| t.text :image_data }
# make errors propagate when raised in callbacks
ActiveRecord::Base.raise_in_transactional_callbacks = true

class Post < ActiveRecord::Base
  include MyUploader::Attachment.new(:image)
end

post = Post.create(image: Down.download("https://example.com/image-from-internet.jpg"))

# Your code for reproducing