support concurrent requests. now demands thin and nginx, but hey. it works
This commit is contained in:
parent
60f3d237e8
commit
e85c50bf62
11 changed files with 100 additions and 43 deletions
22
Gemfile
22
Gemfile
|
@ -1,7 +1,23 @@
|
|||
source 'http://rubygems.org'
|
||||
|
||||
gem 'rails', '3.0.0'
|
||||
gem 'sqlite3-ruby', '~> 1.3.1', :require => 'sqlite3'
|
||||
#gem 'sqlite3-ruby', '~> 1.3.1', :require => 'sqlite3'
|
||||
|
||||
# async wrappers
|
||||
gem 'eventmachine', :git => 'git://github.com/eventmachine/eventmachine.git'
|
||||
gem 'rack-fiber_pool', :require => 'rack/fiber_pool'
|
||||
gem 'em-synchrony', :git => 'git://github.com/igrigorik/em-synchrony.git', :require => [
|
||||
'em-synchrony',
|
||||
'em-synchrony/em-http'
|
||||
]
|
||||
|
||||
# async activerecord requires
|
||||
gem 'mysqlplus', :git => 'git://github.com/oldmoe/mysqlplus.git', :require => 'mysqlplus'
|
||||
gem 'em-mysqlplus', :git => 'git://github.com/igrigorik/em-mysqlplus.git', :require => 'em-activerecord'
|
||||
|
||||
# async http requires
|
||||
gem 'em-http-request',:git => 'git://github.com/igrigorik/em-http-request.git', :require => 'em-http'
|
||||
gem 'addressable', :require => 'addressable/uri'
|
||||
|
||||
gem 'compass', '~> 0.10.1'
|
||||
gem 'haml', '~> 3.0.18'
|
||||
|
@ -9,10 +25,6 @@ gem 'rdiscount', '~> 1.6.5'
|
|||
gem 'RocketAMF', '~> 0.2.1'
|
||||
gem 'will_paginate', '~> 3.0.pre2'
|
||||
|
||||
group :development do
|
||||
gem 'mysql'
|
||||
end
|
||||
|
||||
group :test do
|
||||
gem 'factory_girl_rails', '~> 1.0'
|
||||
gem 'rspec-rails', '~> 2.0.0.beta.22'
|
||||
|
|
47
Gemfile.lock
47
Gemfile.lock
|
@ -1,3 +1,37 @@
|
|||
GIT
|
||||
remote: git://github.com/eventmachine/eventmachine.git
|
||||
revision: 704fbf62677d21b91d0051a04554d4b27eecee2e
|
||||
specs:
|
||||
eventmachine (0.12.11)
|
||||
|
||||
GIT
|
||||
remote: git://github.com/igrigorik/em-http-request.git
|
||||
revision: f069bb9b68335496c8f32475b79e448847befdae
|
||||
specs:
|
||||
em-http-request (0.2.14)
|
||||
addressable (>= 2.0.0)
|
||||
eventmachine (>= 0.12.9)
|
||||
|
||||
GIT
|
||||
remote: git://github.com/igrigorik/em-mysqlplus.git
|
||||
revision: db0feabdc0117ca5e97df35f259e76a4d9ba8a60
|
||||
specs:
|
||||
em-mysqlplus (0.1.5)
|
||||
eventmachine (>= 0.12.9)
|
||||
|
||||
GIT
|
||||
remote: git://github.com/igrigorik/em-synchrony.git
|
||||
revision: 31ae2eabdd630e9b3382e33b8054676ca5450528
|
||||
specs:
|
||||
em-synchrony (0.1.5)
|
||||
eventmachine (>= 0.12.9)
|
||||
|
||||
GIT
|
||||
remote: git://github.com/oldmoe/mysqlplus.git
|
||||
revision: 2daef86c487ec1c531ecfe84ed342d15a1c89554
|
||||
specs:
|
||||
mysqlplus (0.1.1)
|
||||
|
||||
GEM
|
||||
remote: http://rubygems.org/
|
||||
specs:
|
||||
|
@ -29,6 +63,7 @@ GEM
|
|||
activemodel (= 3.0.0)
|
||||
activesupport (= 3.0.0)
|
||||
activesupport (3.0.0)
|
||||
addressable (2.2.1)
|
||||
arel (1.0.1)
|
||||
activesupport (~> 3.0.0)
|
||||
builder (2.1.2)
|
||||
|
@ -48,9 +83,9 @@ GEM
|
|||
mime-types
|
||||
treetop (>= 1.4.5)
|
||||
mime-types (1.16)
|
||||
mysql (2.8.1)
|
||||
polyglot (0.3.1)
|
||||
rack (1.2.1)
|
||||
rack-fiber_pool (0.9.0)
|
||||
rack-mount (0.6.13)
|
||||
rack (>= 1.0.0)
|
||||
rack-test (0.5.6)
|
||||
|
@ -82,7 +117,6 @@ GEM
|
|||
rspec-expectations (= 2.0.0.beta.22)
|
||||
rspec-rails (2.0.0.beta.22)
|
||||
rspec (= 2.0.0.beta.22)
|
||||
sqlite3-ruby (1.3.1)
|
||||
thor (0.14.2)
|
||||
treetop (1.4.8)
|
||||
polyglot (>= 0.3.1)
|
||||
|
@ -94,12 +128,17 @@ PLATFORMS
|
|||
|
||||
DEPENDENCIES
|
||||
RocketAMF (~> 0.2.1)
|
||||
addressable
|
||||
compass (~> 0.10.1)
|
||||
em-http-request!
|
||||
em-mysqlplus!
|
||||
em-synchrony!
|
||||
eventmachine!
|
||||
factory_girl_rails (~> 1.0)
|
||||
haml (~> 3.0.18)
|
||||
mysql
|
||||
mysqlplus!
|
||||
rack-fiber_pool
|
||||
rails (= 3.0.0)
|
||||
rdiscount (~> 1.6.5)
|
||||
rspec-rails (~> 2.0.0.beta.22)
|
||||
sqlite3-ruby (~> 1.3.1)
|
||||
will_paginate (~> 3.0.pre2)
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
# This file is used by Rack-based servers to start the application.
|
||||
|
||||
require ::File.expand_path('../config/environment', __FILE__)
|
||||
|
||||
use Rack::FiberPool
|
||||
run OpenneoImpressItems::Application
|
||||
|
|
|
@ -18,6 +18,10 @@ OpenneoImpressItems::Application.configure do
|
|||
config.action_mailer.raise_delivery_errors = false
|
||||
|
||||
config.active_support.deprecation = :log
|
||||
|
||||
config.serve_static_assets = true
|
||||
|
||||
config.threadsafe!
|
||||
end
|
||||
|
||||
RemoteImpressHost = 'beta.impress.openneo.net'
|
||||
|
|
|
@ -29,7 +29,7 @@ OpenneoImpressItems::Application.configure do
|
|||
|
||||
# Disable Rails's static asset server
|
||||
# In production, Apache or nginx will already do this
|
||||
config.serve_static_assets = false
|
||||
config.serve_static_assets = true
|
||||
|
||||
# Enable serving of images, stylesheets, and javascripts from an asset server
|
||||
# config.action_controller.asset_host = "http://assets.example.com"
|
||||
|
@ -38,7 +38,7 @@ OpenneoImpressItems::Application.configure do
|
|||
# config.action_mailer.raise_delivery_errors = false
|
||||
|
||||
# Enable threaded mode
|
||||
# config.threadsafe!
|
||||
config.threadsafe!
|
||||
|
||||
config.active_support.deprecation = :log
|
||||
end
|
||||
|
|
|
@ -2,87 +2,87 @@
|
|||
body.bp {
|
||||
text-align: center;
|
||||
}
|
||||
/* line 48, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 48, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
* html body.bp legend {
|
||||
margin: 0px -8px 16px 0;
|
||||
padding: 0;
|
||||
}
|
||||
/* line 52, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 52, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
html > body.bp p code {
|
||||
*white-space: normal;
|
||||
}
|
||||
/* line 67, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 67, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp .container {
|
||||
text-align: left;
|
||||
}
|
||||
/* line 69, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 69, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp sup {
|
||||
vertical-align: text-top;
|
||||
}
|
||||
/* line 71, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 71, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp sub {
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
/* line 73, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 73, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp hr {
|
||||
margin: -8px auto 11px;
|
||||
}
|
||||
/* line 75, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 75, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp img {
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
/* line 77, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 77, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp fieldset {
|
||||
padding-top: 0;
|
||||
}
|
||||
/* line 79, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 79, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
/* line 82, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 82, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp input.text {
|
||||
margin: 0.5em 0;
|
||||
background-color: white;
|
||||
border: 1px solid #bbbbbb;
|
||||
}
|
||||
/* line 86, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 86, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp input.text:focus {
|
||||
border: 1px solid #666666;
|
||||
}
|
||||
/* line 88, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 88, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp input.title {
|
||||
margin: 0.5em 0;
|
||||
background-color: white;
|
||||
border: 1px solid #bbbbbb;
|
||||
}
|
||||
/* line 92, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 92, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp input.title:focus {
|
||||
border: 1px solid #666666;
|
||||
}
|
||||
/* line 94, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 94, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp input.checkbox {
|
||||
position: relative;
|
||||
top: 0.25em;
|
||||
}
|
||||
/* line 97, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 97, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp input.radio {
|
||||
position: relative;
|
||||
top: 0.25em;
|
||||
}
|
||||
/* line 100, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 100, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp input.button {
|
||||
position: relative;
|
||||
top: 0.25em;
|
||||
}
|
||||
/* line 103, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 103, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp textarea {
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
/* line 105, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 105, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp select {
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
/* line 107, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
/* line 107, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_ie.scss */
|
||||
body.bp button {
|
||||
position: relative;
|
||||
top: 0.25em;
|
||||
|
|
|
@ -6,11 +6,11 @@ body.bp {
|
|||
background: none;
|
||||
font-size: 10pt;
|
||||
}
|
||||
/* line 52, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
/* line 52, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
body.bp .container {
|
||||
background: none;
|
||||
}
|
||||
/* line 54, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
/* line 54, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
body.bp hr {
|
||||
background: #cccccc;
|
||||
color: #cccccc;
|
||||
|
@ -20,54 +20,54 @@ body.bp hr {
|
|||
padding: 0;
|
||||
border: none;
|
||||
}
|
||||
/* line 62, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
/* line 62, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
body.bp hr.space {
|
||||
background: white;
|
||||
color: white;
|
||||
}
|
||||
/* line 65, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
/* line 65, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
body.bp h1, body.bp h2, body.bp h3, body.bp h4, body.bp h5, body.bp h6 {
|
||||
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||
}
|
||||
/* line 67, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
/* line 67, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
body.bp code {
|
||||
font-size: 0.9em;
|
||||
font-family: "andale mono", "lucida console", monospace;
|
||||
}
|
||||
/* line 72, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
/* line 72, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
body.bp a img {
|
||||
border: none;
|
||||
}
|
||||
/* line 75, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
/* line 75, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
body.bp a:link, body.bp a:visited {
|
||||
background: transparent;
|
||||
font-weight: 700;
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* line 79, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
/* line 79, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
body.bp p img.top {
|
||||
margin-top: 0;
|
||||
}
|
||||
/* line 81, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
/* line 81, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
body.bp blockquote {
|
||||
margin: 1.5em;
|
||||
padding: 1em;
|
||||
font-style: italic;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
/* line 86, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
/* line 86, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
body.bp .small {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
/* line 88, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
/* line 88, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
body.bp .large {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
/* line 90, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
/* line 90, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
body.bp .quiet {
|
||||
color: #999999;
|
||||
}
|
||||
/* line 92, ../../../../../.rvm/gems/ruby-1.9.2-preview3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
/* line 92, ../../../../../.rvm/gems/ruby-1.9.2-preview3@rails3/gems/compass-0.10.5/frameworks/blueprint/stylesheets/blueprint/_print.scss */
|
||||
body.bp .hide {
|
||||
display: none;
|
||||
}
|
||||
|
|
BIN
vendor/cache/addressable-2.2.1.gem
vendored
Normal file
BIN
vendor/cache/addressable-2.2.1.gem
vendored
Normal file
Binary file not shown.
BIN
vendor/cache/mysql-2.8.1.gem
vendored
BIN
vendor/cache/mysql-2.8.1.gem
vendored
Binary file not shown.
BIN
vendor/cache/rack-fiber_pool-0.9.0.gem
vendored
Normal file
BIN
vendor/cache/rack-fiber_pool-0.9.0.gem
vendored
Normal file
Binary file not shown.
BIN
vendor/cache/sqlite3-ruby-1.3.1.gem
vendored
BIN
vendor/cache/sqlite3-ruby-1.3.1.gem
vendored
Binary file not shown.
Loading…
Reference in a new issue