short_rails 1.0.0 → 2.0.0

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.
Files changed (55) hide show
  1. checksums.yaml +5 -13
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +57 -40
  4. data/Rakefile +7 -29
  5. data/app/assets/config/short_rails_manifest.js +1 -0
  6. data/app/assets/stylesheets/short_rails/application.css +6 -4
  7. data/app/controllers/short_rails/short_urls_controller.rb +40 -21
  8. data/app/jobs/short_rails/application_job.rb +4 -0
  9. data/app/mailers/short_rails/application_mailer.rb +6 -0
  10. data/app/models/short_rails/application_record.rb +5 -0
  11. data/app/models/short_rails/short_url.rb +12 -3
  12. data/app/views/layouts/short_rails/application.html.erb +4 -3
  13. data/config/routes.rb +4 -4
  14. data/db/migrate/{20121123124825_create_short_rails_short_urls.rb → 20211116084848_create_short_rails_short_urls.rb} +2 -1
  15. data/lib/short_rails/version.rb +1 -1
  16. data/lib/short_rails.rb +7 -0
  17. metadata +31 -109
  18. data/app/assets/javascripts/short_rails/application.js +0 -15
  19. data/db/migrate/20130108094545_add_url_short_param_to_short_urls.rb +0 -5
  20. data/test/dummy/README.rdoc +0 -261
  21. data/test/dummy/Rakefile +0 -7
  22. data/test/dummy/app/assets/javascripts/application.js +0 -15
  23. data/test/dummy/app/assets/stylesheets/application.css +0 -13
  24. data/test/dummy/app/controllers/application_controller.rb +0 -3
  25. data/test/dummy/app/helpers/application_helper.rb +0 -2
  26. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  27. data/test/dummy/config/application.rb +0 -59
  28. data/test/dummy/config/boot.rb +0 -10
  29. data/test/dummy/config/database.yml +0 -25
  30. data/test/dummy/config/environment.rb +0 -5
  31. data/test/dummy/config/environments/development.rb +0 -37
  32. data/test/dummy/config/environments/production.rb +0 -67
  33. data/test/dummy/config/environments/test.rb +0 -37
  34. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  35. data/test/dummy/config/initializers/inflections.rb +0 -15
  36. data/test/dummy/config/initializers/mime_types.rb +0 -5
  37. data/test/dummy/config/initializers/secret_token.rb +0 -7
  38. data/test/dummy/config/initializers/session_store.rb +0 -8
  39. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  40. data/test/dummy/config/locales/en.yml +0 -5
  41. data/test/dummy/config/routes.rb +0 -3
  42. data/test/dummy/config.ru +0 -4
  43. data/test/dummy/db/development.sqlite3 +0 -0
  44. data/test/dummy/db/migrate/20121123133344_create_short_rails_short_urls.short_rails.rb +0 -12
  45. data/test/dummy/db/migrate/20130108094709_add_url_short_param_to_short_urls.short_rails.rb +0 -6
  46. data/test/dummy/db/schema.rb +0 -24
  47. data/test/dummy/log/development.log +0 -8830
  48. data/test/dummy/public/404.html +0 -26
  49. data/test/dummy/public/422.html +0 -26
  50. data/test/dummy/public/500.html +0 -25
  51. data/test/dummy/public/favicon.ico +0 -0
  52. data/test/dummy/script/rails +0 -6
  53. data/test/integration/navigation_test.rb +0 -10
  54. data/test/short_rails_test.rb +0 -7
  55. data/test/test_helper.rb +0 -15
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YzQ4MTQwZmY4MTI1NDA2MDBlMjA4NmRjMjJiNzJjZjM4OTdmZGE1ZQ==
5
- data.tar.gz: !binary |-
6
- YTNlNzhjMDhjNmFmYWExMGJmN2MxNmU2YWZjZmQzOGUwMDM2OGFjYw==
2
+ SHA256:
3
+ metadata.gz: 312cb7ab3456051bd02ce370632315213846dd1eea8a68627a291f353a84c6b8
4
+ data.tar.gz: 58a0be9855654507bda85a1b8afc4f4aefa8a10a39ce96b2ed98c6fb389260e3
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YjJhMTA3YTQ4NWQ1NGE0MTY5YzIyZTQ2ZWNmMWZlOGU4YTA4NGI5MmJhZDhh
10
- N2M5OGM3NDcyNjBjYTdmNGQwZmZkNmFkNWU0OGQyODI2MzgzMGYyMGQxYjVl
11
- MzBmMjRlZDUxNjdhMWJlMDQzYTAyMjY5ZWQyMmVjNDljMGIzYTY=
12
- data.tar.gz: !binary |-
13
- M2Q5OGRlYjZmY2QxZmFmODcyMjE2NzE4MjMwOTk0MWI4Y2MwZGVhYTgwMDkx
14
- NmUxZGJjYTBkZTY3Y2FkMDI5ZDNhZjgzMjlhNWRjNjU3MmY1ZDNmYWM2OTkz
15
- M2QxMTI4MmEzMjFjMjY3NjkwZDJmZWNjMmJiOTliMjQ1YzIzMjY=
6
+ metadata.gz: 314a394f93cbb5a7eb7a81d5dcd17be79679af8370c8587b8205252d02d53ff3ae4c8b003c0f07d0e5f784b0cd3fa4cb89e1ca7439601e564a2da6c7c9042a93
7
+ data.tar.gz: 71f8c517ddf90c88cfce8367a5141a4686eb666d49dc32f675ea596858f297cb70b5cd8ae9a43212f00c5c60f2c0413e5b570b6e52916d2a3b62661e28f8c005
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2015 Sourcepole
1
+ Copyright 2012-2021 Sourcepole
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,65 +1,82 @@
1
1
  # ShortRails
2
2
 
3
- URL shortener for Rails.
3
+ URL shortener for Rails 6.
4
4
 
5
- ## Installation:
5
+ ## Installation
6
6
 
7
7
  Add this line to your application's Gemfile:
8
-
9
- gem 'short_rails'
8
+ ```ruby
9
+ gem 'short_rails'
10
+ ```
10
11
 
11
12
  And then execute:
12
-
13
- $ bundle
13
+ ```bash
14
+ $ bundle
15
+ ```
14
16
 
15
17
  Or install it yourself as:
16
-
17
- $ gem install short_rails
18
+ ```bash
19
+ $ gem install short_rails
20
+ ```
18
21
 
19
22
  ## Configuration
20
23
 
21
- Mount engine in config/routes.rb
22
-
23
- Rails.application.routes.draw do
24
- mount ShortRails::Engine => "/s"
25
- end
24
+ Mount engine in `config/routes.rb`:
25
+ ```ruby
26
+ Rails.application.routes.draw do
27
+ mount ShortRails::Engine => "/s"
28
+ end
29
+ ```
30
+
31
+ Copy engine migrations to application:
32
+ ```bash
33
+ $ bin/rails short_rails:install:migrations
34
+ $ bin/rails db:migrate
35
+ ```
36
+
37
+ Configure optional host whitelist (default: `nil`, disabled) in initializer (e.g. `config/initializers/short_rails.rb`):
38
+ ```ruby
39
+ ShortRails.setup do |config|
40
+ config.host_whitelist = ['example.com', '127.0.0.1']
41
+ end
42
+ ```
26
43
 
27
- Copy engine migrations to application
28
-
29
- $ rake short_rails:install:migrations
30
- $ rake db:migrate
44
+ ## Usage
31
45
 
32
- Run standalone dummy app
46
+ * `POST /s`: Create short URL
47
+
48
+ Submit data:
49
+ * `base_url`: base URL without parameters (e.g. `http://example.com/path`)
50
+ * `base_url_short_param`: optional parameter for short id on redirect (e.g. `s`)
51
+ * URL parameters
33
52
 
34
- $ cd test/dummy/
35
- $ rails s
53
+ Example request:
54
+ ```bash
55
+ curl -F base_url=http://example.com/path -F base_url_short_param=s -F x=1 -F y=2 http://localhost:3000/s
56
+ ```
36
57
 
37
- http://localhost:3000/s
58
+ Returns short id as text (e.g. `abc123`)
38
59
 
39
- ## Usage
60
+ * `GET /s/abc123`: Open short URL
40
61
 
41
- * POST /s
42
- submit data:
43
- - 'base_url': base URL without parameters (e.g. "http://example.com/path")
44
- - 'base_url_short_param': optional parameter for short id on redirect (e.g. "s")
45
- - url parameters
62
+ If `base_url_short_param` has been set, redirect to `<base_url>?<base_url_short_param>=<short id>` (e.g. `http://example.com/path?s=abc123`), otherwise redirect to full URL.
46
63
 
47
- returns short id (e.g. 'abc123')
64
+ * `GET /s/abc123/params`: Get full URL parameters as JSON
48
65
 
49
- * GET /s/abc123
50
- if 'base_url_short_param' has been set, redirect to
66
+ * `GET /s/abc123/qrcode`: Get QR code as PNG image
51
67
 
52
- "<base_url>?<base_url_short_param>=<short id>"
53
- (e.g. "http://example.com/path?s=abc123")
68
+ Parameters:
69
+ * `width` (optional): image width (max 2048), will be clamped to minimum QR code width
70
+ * `height` (optional): image height (max 2048), will be clamped to minimum QR code height
54
71
 
55
- else redirect to full URL
72
+ ## Development
56
73
 
57
- * GET /s/abc123/params
58
- get full URL parameters as JSON
74
+ Run standalone dummy app at http://localhost:3000/s:
75
+ ```bash
76
+ $ cd test/dummy/
77
+ $ bin/rails s
78
+ ```
59
79
 
60
- * GET /s/abc123/qrcode
61
- parameters:
62
- - 'width' (optional): image width (max 2048), will be clamped to minimum QR code width
63
- - 'height' (optional): image height (max 2048), will be clamped to minimum QR code height
80
+ ## License
64
81
 
65
- get QR code as PNG image
82
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile CHANGED
@@ -1,40 +1,18 @@
1
- #!/usr/bin/env rake
2
- begin
3
- require 'bundler/setup'
4
- rescue LoadError
5
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
- end
7
- begin
8
- require 'rdoc/task'
9
- rescue LoadError
10
- require 'rdoc/rdoc'
11
- require 'rake/rdoctask'
12
- RDoc::Task = Rake::RDocTask
13
- end
14
-
15
- RDoc::Task.new(:rdoc) do |rdoc|
16
- rdoc.rdoc_dir = 'rdoc'
17
- rdoc.title = 'ShortRails'
18
- rdoc.options << '--line-numbers'
19
- rdoc.rdoc_files.include('README.rdoc')
20
- rdoc.rdoc_files.include('lib/**/*.rb')
21
- end
22
-
23
- APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
24
- load 'rails/tasks/engine.rake'
1
+ require "bundler/setup"
25
2
 
3
+ APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
4
+ load "rails/tasks/engine.rake"
26
5
 
6
+ load "rails/tasks/statistics.rake"
27
7
 
28
- Bundler::GemHelper.install_tasks
8
+ require "bundler/gem_tasks"
29
9
 
30
- require 'rake/testtask'
10
+ require "rake/testtask"
31
11
 
32
12
  Rake::TestTask.new(:test) do |t|
33
- t.libs << 'lib'
34
13
  t.libs << 'test'
35
14
  t.pattern = 'test/**/*_test.rb'
36
15
  t.verbose = false
37
16
  end
38
17
 
39
-
40
- task :default => :test
18
+ task default: :test
@@ -0,0 +1 @@
1
+ //= link_directory ../stylesheets/short_rails .css
@@ -3,11 +3,13 @@
3
3
  * listed below.
4
4
  *
5
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.
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
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.
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
10
12
  *
11
- *= require_self
12
13
  *= require_tree .
14
+ *= require_self
13
15
  */
@@ -1,16 +1,19 @@
1
- require_dependency "short_rails/application_controller"
2
-
3
1
  module ShortRails
4
2
  class ShortUrlsController < ApplicationController
3
+ skip_before_action :verify_authenticity_token
5
4
 
6
5
  # GET ':id'
7
6
  # redirect to base URL
8
7
  def show
9
8
  short_url = ShortUrl.find_by_short(params[:short])
9
+ if short_url.nil?
10
+ head :not_found
11
+ return
12
+ end
10
13
 
11
14
  if short_url.url_short_param.nil?
12
15
  # redirect to full URL
13
- query_params = short_url.params
16
+ query_params = short_url.params.permit!
14
17
  else
15
18
  # redirect to base URL with short param
16
19
  query_params = {short_url.url_short_param => short_url.short}
@@ -24,15 +27,15 @@ module ShortRails
24
27
  def create
25
28
  begin
26
29
  short = SecureRandom.base64(6).tr("+/=", "xyz").downcase
27
- end while ShortUrl.where(:short => short).exists?
30
+ end while ShortUrl.where(short: short).exists?
28
31
 
29
32
  url_params = params.except(:action, :controller, :base_url, :base_url_short_param)
30
- short_url = ShortUrl.new(:short => short, :url => params[:base_url], :url_short_param => params[:base_url_short_param], :params => url_params)
33
+ short_url = ShortUrl.new(short: short, url: params[:base_url], params: url_params, url_short_param: params[:base_url_short_param])
31
34
  if short_url.save
32
35
  # return short id
33
- render :text => short
36
+ render plain: short
34
37
  else
35
- head :no_content
38
+ head :bad_request
36
39
  end
37
40
  end
38
41
 
@@ -40,24 +43,28 @@ module ShortRails
40
43
  # get parameters for full URL
41
44
  def parameters
42
45
  short_url = ShortUrl.find_by_short(params[:short])
46
+ if short_url.nil?
47
+ head :not_found
48
+ return
49
+ end
43
50
 
44
- render :text => short_url.params.to_json
51
+ render json: short_url.params
45
52
  end
46
53
 
47
54
  # GET ':id/qrcode'
48
55
  # get QR code containing this short URL
49
56
  def qrcode
50
- require 'rqrcode_png'
57
+ require 'rqrcode'
51
58
 
52
59
  if ShortUrl.find_by_short(params[:short]).nil?
53
- render :text => "ERROR: Could not generate QR code", :status => :bad_request
60
+ render plain: "ERROR: Could not generate QR code", status: :not_found
54
61
  return
55
62
  end
56
63
 
57
64
  width = params[:width].to_i
58
65
  height = params[:height].to_i
59
66
  if width > 2048 || height > 2048
60
- render :text => "ERROR: Requested image size is too large", :status => :bad_request
67
+ render plain: "ERROR: Requested image size is too large", status: :bad_request
61
68
  return
62
69
  end
63
70
 
@@ -66,24 +73,37 @@ module ShortRails
66
73
  version = 3
67
74
  while qr.nil? && version < 40
68
75
  begin
69
- qr = RQRCode::QRCode.new( short_url_url, :size => version, :level => :h )
76
+ qr = RQRCode::QRCode.new(short_url_url, size: version, level: :h)
70
77
  rescue
71
78
  # current version has not enough capacity, try next version
72
79
  version += 1
73
80
  end
74
81
  end
75
82
  if qr.nil?
76
- render :text => "ERROR: Could not generate QR code", :status => :bad_request
83
+ render plain: "ERROR: Could not generate QR code", status: :bad_request
77
84
  return
78
85
  end
79
- qr_image = qr.to_img
80
86
 
81
87
  qr_size = 17 + 4 * version
82
- # default size is QR code pixels with a border of 1/10 that size
83
- img_size =(qr_size + qr_size/10 * 2)
84
- # clamp to min default size
85
- width = [width, img_size].max
86
- height = [height, img_size].max
88
+ # min size is QR code pixels with a border of 4 QR code pixels
89
+ border_modules = 4
90
+ min_size = (qr_size + border_modules * 2)
91
+ if params[:width].nil? && params[:height].nil?
92
+ # default size with 3 image pixels per QR code pixel
93
+ img_size = 3 * min_size
94
+ width = img_size
95
+ height = img_size
96
+ else
97
+ # clamp to min default size
98
+ width = [width, min_size].max
99
+ height = [height, min_size].max
100
+ img_size = [width, height].min
101
+ end
102
+
103
+ qr_image = qr.as_png(
104
+ size: img_size,
105
+ border_modules: border_modules
106
+ )
87
107
 
88
108
  if width > img_size || height > img_size
89
109
  # calculate image size to fit scaled QR code to requested size
@@ -100,8 +120,7 @@ module ShortRails
100
120
  end
101
121
  end
102
122
 
103
- send_data qr_image.to_string, :type => 'image/png', :disposition => 'inline', :filename => "#{params[:short]}.png"
123
+ send_data qr_image.to_s, type: 'image/png', disposition: 'inline', filename: "#{params[:short]}.png"
104
124
  end
105
-
106
125
  end
107
126
  end
@@ -0,0 +1,4 @@
1
+ module ShortRails
2
+ class ApplicationJob < ActiveJob::Base
3
+ end
4
+ end
@@ -0,0 +1,6 @@
1
+ module ShortRails
2
+ class ApplicationMailer < ActionMailer::Base
3
+ default from: 'from@example.com'
4
+ layout 'mailer'
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ module ShortRails
2
+ class ApplicationRecord < ActiveRecord::Base
3
+ self.abstract_class = true
4
+ end
5
+ end
@@ -1,7 +1,16 @@
1
1
  module ShortRails
2
- class ShortUrl < ActiveRecord::Base
3
- attr_accessible :short, :url, :url_short_param, :params
4
-
2
+ class ShortUrl < ApplicationRecord
5
3
  serialize :params
4
+
5
+ validate :url_host_in_whitelist
6
+
7
+ def url_host_in_whitelist
8
+ unless ShortRails.host_whitelist.nil?
9
+ uri = URI.parse(url)
10
+ unless ShortRails.host_whitelist.include?(uri.host)
11
+ errors.add(:url, "is not in host whitelist")
12
+ end
13
+ end
14
+ end
6
15
  end
7
16
  end
@@ -1,10 +1,11 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>ShortRails</title>
5
- <%= stylesheet_link_tag "short_rails/application", :media => "all" %>
6
- <%= javascript_include_tag "short_rails/application" %>
4
+ <title>Short rails</title>
7
5
  <%= csrf_meta_tags %>
6
+ <%= csp_meta_tag %>
7
+
8
+ <%= stylesheet_link_tag "short_rails/application", media: "all" %>
8
9
  </head>
9
10
  <body>
10
11
 
data/config/routes.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  ShortRails::Engine.routes.draw do
2
- match ':short' => 'short_urls#show', :as => :short_url
3
- match ':short/params' => 'short_urls#parameters', :as => :short_url_params
4
- match ':short/qrcode' => 'short_urls#qrcode', :as => :short_url_qrcode
2
+ get ':short' => 'short_urls#show', as: :short_url
3
+ get ':short/params' => 'short_urls#parameters', as: :short_url_params
4
+ get ':short/qrcode' => 'short_urls#qrcode', as: :short_url_qrcode
5
5
 
6
- root :to => 'short_urls#create', :via => :post
6
+ root to: 'short_urls#create', via: :post
7
7
  end
@@ -1,9 +1,10 @@
1
- class CreateShortRailsShortUrls < ActiveRecord::Migration
1
+ class CreateShortRailsShortUrls < ActiveRecord::Migration[6.1]
2
2
  def change
3
3
  create_table :short_rails_short_urls do |t|
4
4
  t.string :short, :null => false, :index => true
5
5
  t.string :url, :null => false
6
6
  t.text :params
7
+ t.string :url_short_param
7
8
 
8
9
  t.timestamps
9
10
  end
@@ -1,3 +1,3 @@
1
1
  module ShortRails
2
- VERSION = "1.0.0"
2
+ VERSION = '2.0.0'
3
3
  end
data/lib/short_rails.rb CHANGED
@@ -1,4 +1,11 @@
1
+ require "short_rails/version"
1
2
  require "short_rails/engine"
2
3
 
3
4
  module ShortRails
5
+ mattr_accessor :host_whitelist
6
+ @@host_whitelist = nil
7
+
8
+ def self.setup
9
+ yield self
10
+ end
4
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: short_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mathias Walker
@@ -9,51 +9,43 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-09 00:00:00.000000000 Z
12
+ date: 2021-11-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 3.2.13
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ~>
20
+ version: 6.1.4
21
+ - - ">="
26
22
  - !ruby/object:Gem::Version
27
- version: 3.2.13
28
- - !ruby/object:Gem::Dependency
29
- name: rqrcode_png
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - ! '>='
33
- - !ruby/object:Gem::Version
34
- version: '0'
23
+ version: 6.1.4.1
35
24
  type: :runtime
36
25
  prerelease: false
37
26
  version_requirements: !ruby/object:Gem::Requirement
38
27
  requirements:
39
- - - ! '>='
28
+ - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: 6.1.4
31
+ - - ">="
40
32
  - !ruby/object:Gem::Version
41
- version: '0'
33
+ version: 6.1.4.1
42
34
  - !ruby/object:Gem::Dependency
43
- name: sqlite3
35
+ name: rqrcode
44
36
  requirement: !ruby/object:Gem::Requirement
45
37
  requirements:
46
- - - ! '>='
38
+ - - "~>"
47
39
  - !ruby/object:Gem::Version
48
- version: '0'
49
- type: :development
40
+ version: '2.1'
41
+ type: :runtime
50
42
  prerelease: false
51
43
  version_requirements: !ruby/object:Gem::Requirement
52
44
  requirements:
53
- - - ! '>='
45
+ - - "~>"
54
46
  - !ruby/object:Gem::Version
55
- version: '0'
56
- description: URL shortener for Rails
47
+ version: '2.1'
48
+ description: URL shortener for Rails 6
57
49
  email:
58
50
  - info@sourcepole.ch
59
51
  executables: []
@@ -63,58 +55,25 @@ files:
63
55
  - MIT-LICENSE
64
56
  - README.md
65
57
  - Rakefile
66
- - app/assets/javascripts/short_rails/application.js
58
+ - app/assets/config/short_rails_manifest.js
67
59
  - app/assets/stylesheets/short_rails/application.css
68
60
  - app/controllers/short_rails/application_controller.rb
69
61
  - app/controllers/short_rails/short_urls_controller.rb
70
62
  - app/helpers/short_rails/application_helper.rb
63
+ - app/jobs/short_rails/application_job.rb
64
+ - app/mailers/short_rails/application_mailer.rb
65
+ - app/models/short_rails/application_record.rb
71
66
  - app/models/short_rails/short_url.rb
72
67
  - app/views/layouts/short_rails/application.html.erb
73
68
  - config/routes.rb
74
- - db/migrate/20121123124825_create_short_rails_short_urls.rb
75
- - db/migrate/20130108094545_add_url_short_param_to_short_urls.rb
69
+ - db/migrate/20211116084848_create_short_rails_short_urls.rb
76
70
  - lib/short_rails.rb
77
71
  - lib/short_rails/engine.rb
78
72
  - lib/short_rails/version.rb
79
73
  - lib/tasks/short_rails_tasks.rake
80
- - test/dummy/README.rdoc
81
- - test/dummy/Rakefile
82
- - test/dummy/app/assets/javascripts/application.js
83
- - test/dummy/app/assets/stylesheets/application.css
84
- - test/dummy/app/controllers/application_controller.rb
85
- - test/dummy/app/helpers/application_helper.rb
86
- - test/dummy/app/views/layouts/application.html.erb
87
- - test/dummy/config.ru
88
- - test/dummy/config/application.rb
89
- - test/dummy/config/boot.rb
90
- - test/dummy/config/database.yml
91
- - test/dummy/config/environment.rb
92
- - test/dummy/config/environments/development.rb
93
- - test/dummy/config/environments/production.rb
94
- - test/dummy/config/environments/test.rb
95
- - test/dummy/config/initializers/backtrace_silencers.rb
96
- - test/dummy/config/initializers/inflections.rb
97
- - test/dummy/config/initializers/mime_types.rb
98
- - test/dummy/config/initializers/secret_token.rb
99
- - test/dummy/config/initializers/session_store.rb
100
- - test/dummy/config/initializers/wrap_parameters.rb
101
- - test/dummy/config/locales/en.yml
102
- - test/dummy/config/routes.rb
103
- - test/dummy/db/development.sqlite3
104
- - test/dummy/db/migrate/20121123133344_create_short_rails_short_urls.short_rails.rb
105
- - test/dummy/db/migrate/20130108094709_add_url_short_param_to_short_urls.short_rails.rb
106
- - test/dummy/db/schema.rb
107
- - test/dummy/log/development.log
108
- - test/dummy/public/404.html
109
- - test/dummy/public/422.html
110
- - test/dummy/public/500.html
111
- - test/dummy/public/favicon.ico
112
- - test/dummy/script/rails
113
- - test/integration/navigation_test.rb
114
- - test/short_rails_test.rb
115
- - test/test_helper.rb
116
- homepage: http://www.sourcepole.ch
117
- licenses: []
74
+ homepage: https://sourcepole.ch
75
+ licenses:
76
+ - MIT
118
77
  metadata: {}
119
78
  post_install_message:
120
79
  rdoc_options: []
@@ -122,54 +81,17 @@ require_paths:
122
81
  - lib
123
82
  required_ruby_version: !ruby/object:Gem::Requirement
124
83
  requirements:
125
- - - ! '>='
84
+ - - ">="
126
85
  - !ruby/object:Gem::Version
127
- version: '0'
86
+ version: 2.6.0
128
87
  required_rubygems_version: !ruby/object:Gem::Requirement
129
88
  requirements:
130
- - - ! '>='
89
+ - - ">="
131
90
  - !ruby/object:Gem::Version
132
91
  version: '0'
133
92
  requirements: []
134
- rubyforge_project:
135
- rubygems_version: 2.2.2
93
+ rubygems_version: 3.1.6
136
94
  signing_key:
137
95
  specification_version: 4
138
96
  summary: URL shortener
139
- test_files:
140
- - test/short_rails_test.rb
141
- - test/test_helper.rb
142
- - test/dummy/config/environment.rb
143
- - test/dummy/config/environments/development.rb
144
- - test/dummy/config/environments/production.rb
145
- - test/dummy/config/environments/test.rb
146
- - test/dummy/config/application.rb
147
- - test/dummy/config/initializers/session_store.rb
148
- - test/dummy/config/initializers/wrap_parameters.rb
149
- - test/dummy/config/initializers/mime_types.rb
150
- - test/dummy/config/initializers/backtrace_silencers.rb
151
- - test/dummy/config/initializers/secret_token.rb
152
- - test/dummy/config/initializers/inflections.rb
153
- - test/dummy/config/locales/en.yml
154
- - test/dummy/config/boot.rb
155
- - test/dummy/config/database.yml
156
- - test/dummy/config/routes.rb
157
- - test/dummy/README.rdoc
158
- - test/dummy/log/development.log
159
- - test/dummy/Rakefile
160
- - test/dummy/script/rails
161
- - test/dummy/config.ru
162
- - test/dummy/app/views/layouts/application.html.erb
163
- - test/dummy/app/controllers/application_controller.rb
164
- - test/dummy/app/helpers/application_helper.rb
165
- - test/dummy/app/assets/javascripts/application.js
166
- - test/dummy/app/assets/stylesheets/application.css
167
- - test/dummy/db/migrate/20130108094709_add_url_short_param_to_short_urls.short_rails.rb
168
- - test/dummy/db/migrate/20121123133344_create_short_rails_short_urls.short_rails.rb
169
- - test/dummy/db/schema.rb
170
- - test/dummy/db/development.sqlite3
171
- - test/dummy/public/422.html
172
- - test/dummy/public/favicon.ico
173
- - test/dummy/public/500.html
174
- - test/dummy/public/404.html
175
- - test/integration/navigation_test.rb
97
+ test_files: []