Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
132 lines (96 sloc) 3.47 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 forum.

  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.

Understanding the codebase

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/memory"
require "down"

Shrine.storages = {
  cache: Shrine::Storage::Memory.new,
  store: Shrine::Storage::Memory.new,
}

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
  String :image_data
end

class Post < Sequel::Model
  include MyUploader::Attachment(: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/memory"
require "down"

Shrine.storages = {
  cache: Shrine::Storage::Memory.new,
  store: Shrine::Storage::Memory.new,
}

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 }

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

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

# Your code for reproducing
You can’t perform that action at this time.