carrierwave-validators 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +26 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +98 -0
- data/Rakefile +6 -0
- data/carrierwave-validators.gemspec +29 -0
- data/lib/carrierwave/validators.rb +17 -0
- data/lib/carrierwave/validators/all.rb +9 -0
- data/lib/carrierwave/validators/error.rb +8 -0
- data/lib/carrierwave/validators/locales/en.yml +13 -0
- data/lib/carrierwave/validators/railtie.rb +14 -0
- data/lib/carrierwave/validators/size_validator.rb +98 -0
- data/lib/carrierwave/validators/version.rb +5 -0
- data/spec/dummy/.rspec +2 -0
- data/spec/dummy/Gemfile +15 -0
- data/spec/dummy/README.md +5 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/images/.keep +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +17 -0
- data/spec/dummy/app/assets/javascripts/profiles.js.coffee +0 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/assets/stylesheets/profiles.css.scss +0 -0
- data/spec/dummy/app/assets/stylesheets/scaffolds.css.scss +69 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/controllers/concerns/.keep +0 -0
- data/spec/dummy/app/controllers/profiles_controller.rb +73 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/helpers/profiles_helper.rb +2 -0
- data/spec/dummy/app/mailers/.keep +0 -0
- data/spec/dummy/app/models/.keep +0 -0
- data/spec/dummy/app/models/concerns/.keep +0 -0
- data/spec/dummy/app/models/profile.rb +9 -0
- data/spec/dummy/app/uploaders/avatar_uploader.rb +58 -0
- data/spec/dummy/app/views/layouts/application.html.erb +12 -0
- data/spec/dummy/app/views/profiles/_form.html.erb +24 -0
- data/spec/dummy/app/views/profiles/edit.html.erb +6 -0
- data/spec/dummy/app/views/profiles/index.html.erb +29 -0
- data/spec/dummy/app/views/profiles/index.json.jbuilder +4 -0
- data/spec/dummy/app/views/profiles/new.html.erb +5 -0
- data/spec/dummy/app/views/profiles/show.html.erb +14 -0
- data/spec/dummy/app/views/profiles/show.json.jbuilder +1 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +28 -0
- data/spec/dummy/config/boot.rb +4 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +29 -0
- data/spec/dummy/config/environments/production.rb +80 -0
- data/spec/dummy/config/environments/test.rb +36 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +12 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +60 -0
- data/spec/dummy/db/migrate/20140330144709_create_profiles.rb +10 -0
- data/spec/dummy/db/schema.rb +23 -0
- data/spec/dummy/db/seeds.rb +7 -0
- data/spec/dummy/lib/assets/.keep +0 -0
- data/spec/dummy/lib/tasks/.keep +0 -0
- data/spec/dummy/log/.keep +0 -0
- data/spec/dummy/public/404.html +58 -0
- data/spec/dummy/public/422.html +58 -0
- data/spec/dummy/public/500.html +57 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/robots.txt +5 -0
- data/spec/dummy/spec/support/avatar.jpg +0 -0
- data/spec/dummy/spec/support/large.jpg +0 -0
- data/spec/dummy/spec/support/small.png +0 -0
- data/spec/spec_helper.rb +34 -0
- data/spec/validators/size_validators/size_validator_spec.rb +165 -0
- metadata +292 -0
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
+
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
9
|
+
* compiled file, but it's generally better to create a new file per style scope.
|
10
|
+
*
|
11
|
+
*= require_self
|
12
|
+
*= require_tree .
|
13
|
+
*/
|
File without changes
|
@@ -0,0 +1,69 @@
|
|
1
|
+
body {
|
2
|
+
background-color: #fff;
|
3
|
+
color: #333;
|
4
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
5
|
+
font-size: 13px;
|
6
|
+
line-height: 18px;
|
7
|
+
}
|
8
|
+
|
9
|
+
p, ol, ul, td {
|
10
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
11
|
+
font-size: 13px;
|
12
|
+
line-height: 18px;
|
13
|
+
}
|
14
|
+
|
15
|
+
pre {
|
16
|
+
background-color: #eee;
|
17
|
+
padding: 10px;
|
18
|
+
font-size: 11px;
|
19
|
+
}
|
20
|
+
|
21
|
+
a {
|
22
|
+
color: #000;
|
23
|
+
&:visited {
|
24
|
+
color: #666;
|
25
|
+
}
|
26
|
+
&:hover {
|
27
|
+
color: #fff;
|
28
|
+
background-color: #000;
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
div {
|
33
|
+
&.field, &.actions {
|
34
|
+
margin-bottom: 10px;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
#notice {
|
39
|
+
color: green;
|
40
|
+
}
|
41
|
+
|
42
|
+
.field_with_errors {
|
43
|
+
padding: 2px;
|
44
|
+
background-color: red;
|
45
|
+
display: table;
|
46
|
+
}
|
47
|
+
|
48
|
+
#error_explanation {
|
49
|
+
width: 450px;
|
50
|
+
border: 2px solid red;
|
51
|
+
padding: 7px;
|
52
|
+
padding-bottom: 0;
|
53
|
+
margin-bottom: 20px;
|
54
|
+
background-color: #f0f0f0;
|
55
|
+
h2 {
|
56
|
+
text-align: left;
|
57
|
+
font-weight: bold;
|
58
|
+
padding: 5px 5px 5px 15px;
|
59
|
+
font-size: 12px;
|
60
|
+
margin: -7px;
|
61
|
+
margin-bottom: 0px;
|
62
|
+
background-color: #c00;
|
63
|
+
color: #fff;
|
64
|
+
}
|
65
|
+
ul li {
|
66
|
+
font-size: 12px;
|
67
|
+
list-style: square;
|
68
|
+
}
|
69
|
+
}
|
File without changes
|
@@ -0,0 +1,73 @@
|
|
1
|
+
class ProfilesController < ApplicationController
|
2
|
+
before_action :set_profile, only: [:show, :edit, :update, :destroy]
|
3
|
+
|
4
|
+
# GET /profiles
|
5
|
+
# GET /profiles.json
|
6
|
+
def index
|
7
|
+
@profiles = Profile.all
|
8
|
+
end
|
9
|
+
|
10
|
+
# GET /profiles/1
|
11
|
+
# GET /profiles/1.json
|
12
|
+
def show
|
13
|
+
end
|
14
|
+
|
15
|
+
# GET /profiles/new
|
16
|
+
def new
|
17
|
+
@profile = Profile.new
|
18
|
+
end
|
19
|
+
|
20
|
+
# GET /profiles/1/edit
|
21
|
+
def edit
|
22
|
+
end
|
23
|
+
|
24
|
+
# POST /profiles
|
25
|
+
# POST /profiles.json
|
26
|
+
def create
|
27
|
+
@profile = Profile.new(profile_params)
|
28
|
+
respond_to do |format|
|
29
|
+
if @profile.save
|
30
|
+
format.html { redirect_to @profile, notice: 'Profile was successfully created.' }
|
31
|
+
format.json { render action: 'show', status: :created, location: @profile }
|
32
|
+
else
|
33
|
+
format.html { render action: 'new' }
|
34
|
+
format.json { render json: @profile.errors, status: :unprocessable_entity }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# PATCH/PUT /profiles/1
|
40
|
+
# PATCH/PUT /profiles/1.json
|
41
|
+
def update
|
42
|
+
respond_to do |format|
|
43
|
+
if @profile.update(profile_params)
|
44
|
+
format.html { redirect_to @profile, notice: 'Profile was successfully updated.' }
|
45
|
+
format.json { head :no_content }
|
46
|
+
else
|
47
|
+
format.html { render action: 'edit' }
|
48
|
+
format.json { render json: @profile.errors, status: :unprocessable_entity }
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# DELETE /profiles/1
|
54
|
+
# DELETE /profiles/1.json
|
55
|
+
def destroy
|
56
|
+
@profile.destroy
|
57
|
+
respond_to do |format|
|
58
|
+
format.html { redirect_to profiles_url }
|
59
|
+
format.json { head :no_content }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
# Use callbacks to share common setup or constraints between actions.
|
65
|
+
def set_profile
|
66
|
+
@profile = Profile.find(params[:id])
|
67
|
+
end
|
68
|
+
|
69
|
+
# Never trust parameters from the scary internet, only allow the white list through.
|
70
|
+
def profile_params
|
71
|
+
params.require(:profile).permit(:name, :avatar)
|
72
|
+
end
|
73
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,9 @@
|
|
1
|
+
|
2
|
+
class Profile < ActiveRecord::Base
|
3
|
+
mount_uploader :avatar, AvatarUploader
|
4
|
+
# validates :avatar, :size => {:in => 0..20.kilobytes}
|
5
|
+
# validates :avatar, :size => {:less_than => 40.kilobytes}
|
6
|
+
# validates :avatar, :size => {:less_than_or_equal_to => 40.kilobytes}
|
7
|
+
# validates :avatar, :size => {:greater_than => 20.kilobytes}
|
8
|
+
# validates :avatar, :size => {:greater_than_or_equal_to => 20.kilobytes}
|
9
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
class AvatarUploader < CarrierWave::Uploader::Base
|
3
|
+
|
4
|
+
# Include RMagick or MiniMagick support:
|
5
|
+
# include CarrierWave::RMagick
|
6
|
+
# include CarrierWave::MiniMagick
|
7
|
+
# include CarrierWave::RMagick
|
8
|
+
|
9
|
+
|
10
|
+
# Choose what kind of storage to use for this uploader:
|
11
|
+
storage :file
|
12
|
+
# storage :fog
|
13
|
+
|
14
|
+
# Override the directory where uploaded files will be stored.
|
15
|
+
# This is a sensible default for uploaders that are meant to be mounted:
|
16
|
+
def store_dir
|
17
|
+
"#{Rails.root}/public/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
18
|
+
end
|
19
|
+
|
20
|
+
# Provide a default URL as a default if there hasn't been a file uploaded:
|
21
|
+
# def default_url
|
22
|
+
# # For Rails 3.1+ asset pipeline compatibility:
|
23
|
+
# # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
|
24
|
+
#
|
25
|
+
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
26
|
+
# end
|
27
|
+
|
28
|
+
# Process files as they are uploaded:
|
29
|
+
# process :scale => [200, 300]
|
30
|
+
# process :crop
|
31
|
+
#
|
32
|
+
# def scale(width, height)
|
33
|
+
# # do something
|
34
|
+
# end
|
35
|
+
|
36
|
+
# Create different versions of your uploaded files:
|
37
|
+
#version :thumb do
|
38
|
+
#process :crop
|
39
|
+
#resize_to_fill(100, 100)
|
40
|
+
# process :resize_to_fit => [50, 50]
|
41
|
+
#end
|
42
|
+
#version :large do
|
43
|
+
# resize_to_limit(600,600)
|
44
|
+
#end
|
45
|
+
|
46
|
+
|
47
|
+
# Add a white list of extensions which are allowed to be uploaded.
|
48
|
+
# For images you might use something like this:
|
49
|
+
def extension_white_list
|
50
|
+
%w(jpg jpeg gif png)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Override the filename of the uploaded files:
|
54
|
+
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
55
|
+
# def filename
|
56
|
+
# "something.jpg" if original_filename
|
57
|
+
# end
|
58
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Dummy</title>
|
5
|
+
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
|
6
|
+
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
|
7
|
+
<%= csrf_meta_tags %>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<%= yield %>
|
11
|
+
</body>
|
12
|
+
</html>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<%= form_for(@profile, html: {multipart: true}) do |f| %>
|
2
|
+
<% if @profile.errors.any? %>
|
3
|
+
<div id="error_explanation">
|
4
|
+
<h2><%= pluralize(@profile.errors.count, "error") %>
|
5
|
+
prohibited this profile from being saved:</h2>
|
6
|
+
<ul>
|
7
|
+
<% @profile.errors.full_messages.each do |msg| %>
|
8
|
+
<li><%= msg %></li>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
<div class="field">
|
14
|
+
<%= f.label :name %><br>
|
15
|
+
<%= f.text_field :name %>
|
16
|
+
</div>
|
17
|
+
<div class="field">
|
18
|
+
<%= f.label :avatar %><br>
|
19
|
+
<%= f.file_field :avatar %>
|
20
|
+
</div>
|
21
|
+
<div class="actions">
|
22
|
+
<%= f.submit %>
|
23
|
+
</div>
|
24
|
+
<% end %>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<h1>Listing profiles</h1>
|
2
|
+
|
3
|
+
<table>
|
4
|
+
<thead>
|
5
|
+
<tr>
|
6
|
+
<th>Name</th>
|
7
|
+
<th>Avatar</th>
|
8
|
+
<th></th>
|
9
|
+
<th></th>
|
10
|
+
<th></th>
|
11
|
+
</tr>
|
12
|
+
</thead>
|
13
|
+
|
14
|
+
<tbody>
|
15
|
+
<% @profiles.each do |profile| %>
|
16
|
+
<tr>
|
17
|
+
<td><%= profile.name %></td>
|
18
|
+
<td><%= profile.avatar %></td>
|
19
|
+
<td><%= link_to 'Show', profile %></td>
|
20
|
+
<td><%= link_to 'Edit', edit_profile_path(profile) %></td>
|
21
|
+
<td><%= link_to 'Destroy', profile, method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
22
|
+
</tr>
|
23
|
+
<% end %>
|
24
|
+
</tbody>
|
25
|
+
</table>
|
26
|
+
|
27
|
+
<br>
|
28
|
+
|
29
|
+
<%= link_to 'New Profile', new_profile_path %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<p id="notice"><%= notice %></p>
|
2
|
+
|
3
|
+
<p>
|
4
|
+
<strong>Name:</strong>
|
5
|
+
<%= @profile.name %>
|
6
|
+
</p>
|
7
|
+
|
8
|
+
<p>
|
9
|
+
<strong>Avatar:</strong>
|
10
|
+
<%= image_tag @profile.avatar.url %>
|
11
|
+
</p>
|
12
|
+
|
13
|
+
<%= link_to 'Edit', edit_profile_path(@profile) %> |
|
14
|
+
<%= link_to 'Back', profiles_path %>
|
@@ -0,0 +1 @@
|
|
1
|
+
json.extract! @profile, :id, :name, :avatar, :created_at, :updated_at
|
data/spec/dummy/bin/rake
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.expand_path('../boot', __FILE__)
|
2
|
+
|
3
|
+
# Pick the frameworks you want:
|
4
|
+
require "active_record/railtie"
|
5
|
+
require "action_controller/railtie"
|
6
|
+
require "action_mailer/railtie"
|
7
|
+
require "sprockets/railtie"
|
8
|
+
# require "rails/test_unit/railtie"
|
9
|
+
|
10
|
+
# Require the gems listed in Gemfile, including any gems
|
11
|
+
# you've limited to :test, :development, or :production.
|
12
|
+
Bundler.require(:default, Rails.env)
|
13
|
+
|
14
|
+
module Dummy
|
15
|
+
class Application < Rails::Application
|
16
|
+
# Settings in config/environments/* take precedence over those specified here.
|
17
|
+
# Application configuration should go into files in config/initializers
|
18
|
+
# -- all .rb files in that directory are automatically loaded.
|
19
|
+
|
20
|
+
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
21
|
+
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
22
|
+
# config.time_zone = 'Central Time (US & Canada)'
|
23
|
+
config.autoload_paths << "#{config.root}/helpers/form_builder.rb"
|
24
|
+
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
25
|
+
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
26
|
+
# config.i18n.default_locale = :de
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# SQLite version 3.x
|
2
|
+
# gem install sqlite3
|
3
|
+
#
|
4
|
+
# Ensure the SQLite 3 gem is defined in your Gemfile
|
5
|
+
# gem 'sqlite3'
|
6
|
+
development:
|
7
|
+
adapter: sqlite3
|
8
|
+
database: db/development.sqlite3
|
9
|
+
pool: 5
|
10
|
+
timeout: 5000
|
11
|
+
|
12
|
+
# Warning: The database defined as "test" will be erased and
|
13
|
+
# re-generated from your development database when you run "rake".
|
14
|
+
# Do not set this db to the same as development or production.
|
15
|
+
test:
|
16
|
+
adapter: sqlite3
|
17
|
+
database: db/test.sqlite3
|
18
|
+
pool: 5
|
19
|
+
timeout: 5000
|
20
|
+
|
21
|
+
production:
|
22
|
+
adapter: sqlite3
|
23
|
+
database: db/production.sqlite3
|
24
|
+
pool: 5
|
25
|
+
timeout: 5000
|