mirror of
https://github.com/Retrospring/retrospring.git
synced 2025-04-06 18:10:56 +02:00
changed a few things
This commit is contained in:
parent
f4da926a42
commit
ae66877cde
31 changed files with 497 additions and 205 deletions
.gitignoreGemfileGemfile.lockREADME.md
app
assets
dir
helpers
models
views
devise
confirmations
passwords
registrations
sessions
unlocks
layouts
config
db
migrate
schema.rbtest
14
.gitignore
vendored
14
.gitignore
vendored
|
@ -1,16 +1,12 @@
|
|||
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
|
||||
#
|
||||
# If you find yourself ignoring temporary files generated by your text editor
|
||||
# or operating system, you probably want to add a global ignore instead:
|
||||
# git config --global core.excludesfile '~/.gitignore_global'
|
||||
|
||||
# Ignore bundler config.
|
||||
/.bundle
|
||||
|
||||
# Ignore the default SQLite database.
|
||||
/db/*.sqlite3
|
||||
/db/*.sqlite3-journal
|
||||
|
||||
# Ignore all logfiles and tempfiles.
|
||||
/log/*.log
|
||||
/tmp
|
||||
|
||||
/config/database.yml
|
||||
.sass-cache/
|
||||
coverage/
|
||||
*.swp
|
||||
|
|
60
Gemfile
60
Gemfile
|
@ -1,49 +1,37 @@
|
|||
source 'https://rubygems.org'
|
||||
|
||||
gem 'rails', '4.1.6'
|
||||
|
||||
gem 'pg', group: :postgres
|
||||
gem 'mysql2', group: :mysql
|
||||
|
||||
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
||||
gem 'rails', '4.1.4'
|
||||
# Use sqlite3 as the database for Active Record
|
||||
gem 'sqlite3'
|
||||
# Use SCSS for stylesheets
|
||||
gem 'sass-rails', '~> 4.0.3'
|
||||
# Use Uglifier as compressor for JavaScript assets
|
||||
gem 'uglifier', '>= 1.3.0'
|
||||
# Use CoffeeScript for .js.coffee assets and views
|
||||
gem 'coffee-rails', '~> 4.0.0'
|
||||
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
||||
# gem 'therubyracer', platforms: :ruby
|
||||
|
||||
# Use jquery as the JavaScript library
|
||||
gem 'coffee-rails', '~> 4.1.0'
|
||||
gem 'jquery-rails'
|
||||
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
|
||||
gem 'turbolinks'
|
||||
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
|
||||
gem 'jbuilder', '~> 2.0'
|
||||
# bundle exec rake doc:rails generates the API under doc/api.
|
||||
gem 'sdoc', '~> 0.4.0', group: :doc
|
||||
gem 'jbuilder', '~> 2.2.4'
|
||||
gem 'sdoc', '~> 0.4.1', group: :doc
|
||||
|
||||
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
||||
gem 'spring', group: :development
|
||||
gem 'bcrypt', '~> 3.1.7'
|
||||
|
||||
# Use ActiveModel has_secure_password
|
||||
# gem 'bcrypt', '~> 3.1.7'
|
||||
|
||||
# Use unicorn as the app server
|
||||
# gem 'unicorn'
|
||||
|
||||
# Use Capistrano for deployment
|
||||
# gem 'capistrano-rails', group: :development
|
||||
|
||||
# Use debugger
|
||||
# gem 'debugger', group: [:development, :test]
|
||||
|
||||
gem 'thin'
|
||||
gem 'bootstrap-sass', '~> 3.2.0.1'
|
||||
gem 'bootswatch-rails', '~> 3.2.0'
|
||||
gem 'haml'
|
||||
gem 'semantic-ui-sass', '~> 0.19.3.0'
|
||||
gem 'will_paginate'
|
||||
gem 'will_paginate-bootstrap'
|
||||
gem 'http_accept_language'
|
||||
gem 'devise'
|
||||
gem 'bootstrap_form'
|
||||
gem 'font-kit-rails'
|
||||
gem 'nprogress-rails'
|
||||
|
||||
group :development do
|
||||
gem 'thin'
|
||||
gem 'spring'
|
||||
end
|
||||
|
||||
group :production do
|
||||
gem 'unicorn', group: :production
|
||||
end
|
||||
|
||||
group :test do
|
||||
gem 'simplecov'
|
||||
end
|
||||
|
|
154
Gemfile.lock
154
Gemfile.lock
|
@ -1,161 +1,173 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
actionmailer (4.1.4)
|
||||
actionpack (= 4.1.4)
|
||||
actionview (= 4.1.4)
|
||||
mail (~> 2.5.4)
|
||||
actionpack (4.1.4)
|
||||
actionview (= 4.1.4)
|
||||
activesupport (= 4.1.4)
|
||||
actionmailer (4.1.6)
|
||||
actionpack (= 4.1.6)
|
||||
actionview (= 4.1.6)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
actionpack (4.1.6)
|
||||
actionview (= 4.1.6)
|
||||
activesupport (= 4.1.6)
|
||||
rack (~> 1.5.2)
|
||||
rack-test (~> 0.6.2)
|
||||
actionview (4.1.4)
|
||||
activesupport (= 4.1.4)
|
||||
actionview (4.1.6)
|
||||
activesupport (= 4.1.6)
|
||||
builder (~> 3.1)
|
||||
erubis (~> 2.7.0)
|
||||
activemodel (4.1.4)
|
||||
activesupport (= 4.1.4)
|
||||
activemodel (4.1.6)
|
||||
activesupport (= 4.1.6)
|
||||
builder (~> 3.1)
|
||||
activerecord (4.1.4)
|
||||
activemodel (= 4.1.4)
|
||||
activesupport (= 4.1.4)
|
||||
activerecord (4.1.6)
|
||||
activemodel (= 4.1.6)
|
||||
activesupport (= 4.1.6)
|
||||
arel (~> 5.0.0)
|
||||
activesupport (4.1.4)
|
||||
activesupport (4.1.6)
|
||||
i18n (~> 0.6, >= 0.6.9)
|
||||
json (~> 1.7, >= 1.7.7)
|
||||
minitest (~> 5.1)
|
||||
thread_safe (~> 0.1)
|
||||
tzinfo (~> 1.1)
|
||||
arel (5.0.1.20140414130214)
|
||||
bcrypt (3.1.7)
|
||||
bootstrap-sass (3.2.0.1)
|
||||
sass (~> 3.2)
|
||||
bootstrap_form (2.1.1)
|
||||
bootswatch-rails (3.2.0)
|
||||
railties (>= 3.1)
|
||||
bcrypt (3.1.9)
|
||||
builder (3.2.2)
|
||||
coffee-rails (4.0.1)
|
||||
coffee-rails (4.1.0)
|
||||
coffee-script (>= 2.2.0)
|
||||
railties (>= 4.0.0, < 5.0)
|
||||
coffee-script (2.3.0)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.7.1)
|
||||
coffee-script-source (1.8.0)
|
||||
daemons (1.1.9)
|
||||
devise (3.2.4)
|
||||
devise (3.4.0)
|
||||
bcrypt (~> 3.0)
|
||||
orm_adapter (~> 0.1)
|
||||
railties (>= 3.2.6, < 5)
|
||||
responders
|
||||
thread_safe (~> 0.1)
|
||||
warden (~> 1.2.3)
|
||||
docile (1.1.5)
|
||||
erubis (2.7.0)
|
||||
eventmachine (1.0.3)
|
||||
execjs (2.2.1)
|
||||
execjs (2.2.2)
|
||||
font-kit-rails (1.0.2)
|
||||
rails
|
||||
haml (4.0.5)
|
||||
tilt
|
||||
hike (1.2.3)
|
||||
http_accept_language (2.0.2)
|
||||
i18n (0.6.11)
|
||||
jbuilder (2.1.3)
|
||||
jbuilder (2.2.4)
|
||||
activesupport (>= 3.0.0, < 5)
|
||||
multi_json (~> 1.2)
|
||||
jquery-rails (3.1.1)
|
||||
jquery-rails (3.1.2)
|
||||
railties (>= 3.0, < 5.0)
|
||||
thor (>= 0.14, < 2.0)
|
||||
json (1.8.1)
|
||||
mail (2.5.4)
|
||||
mime-types (~> 1.16)
|
||||
treetop (~> 1.4.8)
|
||||
mime-types (1.25.1)
|
||||
minitest (5.4.0)
|
||||
kgio (2.9.2)
|
||||
mail (2.6.1)
|
||||
mime-types (>= 1.16, < 3)
|
||||
mime-types (2.4.3)
|
||||
minitest (5.4.2)
|
||||
multi_json (1.10.1)
|
||||
mysql2 (0.3.16)
|
||||
nprogress-rails (0.1.6.3)
|
||||
orm_adapter (0.5.0)
|
||||
polyglot (0.3.5)
|
||||
pg (0.17.1)
|
||||
rack (1.5.2)
|
||||
rack-test (0.6.2)
|
||||
rack (>= 1.0)
|
||||
rails (4.1.4)
|
||||
actionmailer (= 4.1.4)
|
||||
actionpack (= 4.1.4)
|
||||
actionview (= 4.1.4)
|
||||
activemodel (= 4.1.4)
|
||||
activerecord (= 4.1.4)
|
||||
activesupport (= 4.1.4)
|
||||
rails (4.1.6)
|
||||
actionmailer (= 4.1.6)
|
||||
actionpack (= 4.1.6)
|
||||
actionview (= 4.1.6)
|
||||
activemodel (= 4.1.6)
|
||||
activerecord (= 4.1.6)
|
||||
activesupport (= 4.1.6)
|
||||
bundler (>= 1.3.0, < 2.0)
|
||||
railties (= 4.1.4)
|
||||
railties (= 4.1.6)
|
||||
sprockets-rails (~> 2.0)
|
||||
railties (4.1.4)
|
||||
actionpack (= 4.1.4)
|
||||
activesupport (= 4.1.4)
|
||||
railties (4.1.6)
|
||||
actionpack (= 4.1.6)
|
||||
activesupport (= 4.1.6)
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.18.1, < 2.0)
|
||||
raindrops (0.13.0)
|
||||
rake (10.3.2)
|
||||
rdoc (4.1.1)
|
||||
rdoc (4.1.2)
|
||||
json (~> 1.4)
|
||||
responders (1.1.1)
|
||||
railties (>= 3.2, < 4.2)
|
||||
sass (3.2.19)
|
||||
sass-rails (4.0.3)
|
||||
railties (>= 4.0.0, < 5.0)
|
||||
sass (~> 3.2.0)
|
||||
sprockets (~> 2.8, <= 2.11.0)
|
||||
sprockets-rails (~> 2.0)
|
||||
sdoc (0.4.0)
|
||||
json (~> 1.8)
|
||||
rdoc (~> 4.0, < 5.0)
|
||||
sdoc (0.4.1)
|
||||
json (~> 1.7, >= 1.7.7)
|
||||
rdoc (~> 4.0)
|
||||
semantic-ui-sass (0.19.3.0)
|
||||
sass (~> 3.2)
|
||||
simplecov (0.9.1)
|
||||
docile (~> 1.1.0)
|
||||
multi_json (~> 1.0)
|
||||
simplecov-html (~> 0.8.0)
|
||||
simplecov-html (0.8.0)
|
||||
spring (1.1.3)
|
||||
sprockets (2.11.0)
|
||||
hike (~> 1.2)
|
||||
multi_json (~> 1.0)
|
||||
rack (~> 1.0)
|
||||
tilt (~> 1.1, != 1.3.0)
|
||||
sprockets-rails (2.1.3)
|
||||
sprockets-rails (2.2.0)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
sprockets (~> 2.8)
|
||||
sqlite3 (1.3.9)
|
||||
thin (1.6.2)
|
||||
daemons (>= 1.0.9)
|
||||
eventmachine (>= 1.0.0)
|
||||
rack (>= 1.0.0)
|
||||
sprockets (>= 2.8, < 4.0)
|
||||
thin (1.6.3)
|
||||
daemons (~> 1.0, >= 1.0.9)
|
||||
eventmachine (~> 1.0)
|
||||
rack (~> 1.0)
|
||||
thor (0.19.1)
|
||||
thread_safe (0.3.4)
|
||||
tilt (1.4.1)
|
||||
treetop (1.4.15)
|
||||
polyglot
|
||||
polyglot (>= 0.3.1)
|
||||
turbolinks (2.2.2)
|
||||
turbolinks (2.4.0)
|
||||
coffee-rails
|
||||
tzinfo (1.2.1)
|
||||
tzinfo (1.2.2)
|
||||
thread_safe (~> 0.1)
|
||||
uglifier (2.5.3)
|
||||
execjs (>= 0.3.0)
|
||||
json (>= 1.8.0)
|
||||
unicorn (4.8.3)
|
||||
kgio (~> 2.6)
|
||||
rack
|
||||
raindrops (~> 0.7)
|
||||
warden (1.2.3)
|
||||
rack (>= 1.0)
|
||||
will_paginate (3.0.7)
|
||||
will_paginate-bootstrap (1.0.1)
|
||||
will_paginate (>= 3.0.3)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
bootstrap-sass (~> 3.2.0.1)
|
||||
bootstrap_form
|
||||
bootswatch-rails (~> 3.2.0)
|
||||
coffee-rails (~> 4.0.0)
|
||||
bcrypt (~> 3.1.7)
|
||||
coffee-rails (~> 4.1.0)
|
||||
devise
|
||||
font-kit-rails
|
||||
haml
|
||||
http_accept_language
|
||||
jbuilder (~> 2.0)
|
||||
jbuilder (~> 2.2.4)
|
||||
jquery-rails
|
||||
rails (= 4.1.4)
|
||||
mysql2
|
||||
nprogress-rails
|
||||
pg
|
||||
rails (= 4.1.6)
|
||||
sass-rails (~> 4.0.3)
|
||||
sdoc (~> 0.4.0)
|
||||
sdoc (~> 0.4.1)
|
||||
semantic-ui-sass (~> 0.19.3.0)
|
||||
simplecov
|
||||
spring
|
||||
sqlite3
|
||||
thin
|
||||
turbolinks
|
||||
uglifier (>= 1.3.0)
|
||||
unicorn
|
||||
will_paginate
|
||||
will_paginate-bootstrap
|
||||
|
|
115
README.md
115
README.md
|
@ -1,20 +1,105 @@
|
|||
# README
|
||||
# justask [](https://ci.rrerr.net/projects/9?ref=master)
|
||||
|
||||
This README would normally document whatever steps are necessary to get the
|
||||
application up and running.
|
||||
## Requirements
|
||||
|
||||
Things you may want to cover:
|
||||
- UNIX-like system (Linux, *BSD, ...)
|
||||
- ruby 1.9.3+
|
||||
- Bundler
|
||||
- PostgreSQL or MySQL
|
||||
|
||||
* Ruby version
|
||||
* System dependencies
|
||||
* Configuration
|
||||
* Database creation
|
||||
* Database initialization
|
||||
* How to run the test suite
|
||||
* Services (job queues, cache servers, search engines, etc.)
|
||||
* Deployment instructions
|
||||
* ...
|
||||
## Installation
|
||||
|
||||
### Database
|
||||
|
||||
Please feel free to use a different markup language if you do not plan to run
|
||||
`rake doc:app`.
|
||||
#### PostgreSQL
|
||||
|
||||
```
|
||||
$ sudo -u postgres psql -d template1
|
||||
template1=# CREATE USER justask CREATEDB;
|
||||
template1=# CREATE DATABASE justask_production OWNER justask;
|
||||
template1=# \q
|
||||
```
|
||||
|
||||
Try connecting to the database:
|
||||
|
||||
```
|
||||
$ psql -U justask -d justask_production
|
||||
```
|
||||
|
||||
#### MySQL
|
||||
|
||||
```
|
||||
$ mysql -u root -p
|
||||
# change 'hack me' in the command below to a real password
|
||||
mysql> CREATE USER 'justask'@'localhost' IDENTIFIED BY 'hack me';
|
||||
mysql> SET storage_engine=INNODB;
|
||||
mysql> CREATE DATABASE IF NOT EXISTS `justask_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
|
||||
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `justask_production`.* TO 'justask'@'localhost';
|
||||
mysql> \q
|
||||
```
|
||||
|
||||
Try connecting to the database:
|
||||
|
||||
```
|
||||
$ mysql -u justask -p -D justask_production
|
||||
```
|
||||
|
||||
### justask
|
||||
|
||||
#### Clone the Source
|
||||
|
||||
```
|
||||
$ git clone https://git.rrerr.net/nilsding/justask.git justask
|
||||
```
|
||||
|
||||
#### Configure It
|
||||
|
||||
```
|
||||
# Change into the justask directory
|
||||
$ cd justask
|
||||
|
||||
# Copy the example config
|
||||
$ cp config/justask.yml.example config/justask.yml
|
||||
|
||||
# Edit the configuration file
|
||||
$ vi config/justask.yml
|
||||
```
|
||||
|
||||
#### Database Configuration
|
||||
|
||||
```
|
||||
# PostgreSQL only:
|
||||
$ cp config/database.yml.postgres config/database.yml
|
||||
|
||||
# MySQL only:
|
||||
$ cp config/database.yml.mysql config/database.yml
|
||||
|
||||
# MySQL and remote PostgreSQL only:
|
||||
$ vi config/database.yml
|
||||
|
||||
# Both:
|
||||
# Make database.yml readable only for you
|
||||
chmod o-rwx config/database.yml
|
||||
```
|
||||
|
||||
#### Install Gems
|
||||
|
||||
```
|
||||
# For PostgreSQL (note: the option says "without ... mysql")
|
||||
$ bundle install --deployment --without development test mysql
|
||||
|
||||
# Or, if you use MySQL
|
||||
$ bundle install --deployment --without development test postgres
|
||||
```
|
||||
|
||||
#### Initialize Database
|
||||
|
||||
```
|
||||
$ bundle exec rake db:migrate RAILS_ENV=production
|
||||
```
|
||||
|
||||
#### Compile Assets
|
||||
|
||||
```
|
||||
$ bundle exec rake assets:precompile RAILS_ENV=production
|
||||
```
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
#= require jquery
|
||||
#= require jquery_ujs
|
||||
#= require turbolinks
|
||||
#= require bootstrap
|
||||
#= require semantic-ui
|
||||
#= require_tree .
|
||||
|
||||
$(document).ready ->
|
||||
$('.ui.dropdown').dropdown
|
||||
on: "hover"
|
|
@ -1,9 +1,73 @@
|
|||
/*
|
||||
*= require rails_bootstrap_forms
|
||||
*= require font-kit-rails/open-sans
|
||||
*= require_self
|
||||
*/
|
||||
@import "bootswatch/flatly/variables";
|
||||
@import "bootstrap";
|
||||
body { padding-top: $navbar-height; }
|
||||
@import "bootswatch/flatly/bootswatch";
|
||||
@import "semantic-ui";
|
||||
@import "base";
|
||||
|
||||
html,
|
||||
body {
|
||||
font-size: 15px;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Open Sans", "Helvetica Neue", "Helvetica", "DejaVu Sans", "Arial", sans-serif;
|
||||
background: #FFFFFF;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
color: #555555;
|
||||
text-rendering: optimizeLegibility;
|
||||
min-width: 320px;
|
||||
}
|
||||
|
||||
|
||||
/* mobile only */
|
||||
|
||||
@media only screen and (max-width : 768px) {
|
||||
.ui.page.grid.segment {
|
||||
padding-top: 2rem;
|
||||
padding-bottom: 2rem;
|
||||
}
|
||||
|
||||
h1.ui.header {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
.masthead.segment {
|
||||
background-size: auto;
|
||||
}
|
||||
|
||||
.masthead.segment .information {
|
||||
margin-left: 190px;
|
||||
}
|
||||
|
||||
.masthead.segment .image {
|
||||
bottom: -65px;
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
.masthead.segment .button {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.overview .divided.grid .header .icon {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
.overview .divided.grid .header + p {
|
||||
min-height: 0px;
|
||||
}
|
||||
|
||||
.masthead.segment .column {
|
||||
font-size: 0.7rem;
|
||||
}
|
||||
|
||||
.masthead.segment .column p {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width : 1000px) {
|
||||
|
||||
}
|
0
app/dir/x
Normal file
0
app/dir/x
Normal file
|
@ -1,6 +1,9 @@
|
|||
module ApplicationHelper
|
||||
def nav_entry(body, path)
|
||||
content_tag(:li, link_to(body, path), class: ('active' if current_page? path))
|
||||
def nav_entry(body, path, options={})
|
||||
options = {class: "", icon: "", label: "", label_color: "red"}.merge options
|
||||
body = semantic_icon(options[:icon]) + " " + body unless options[:icon].empty?
|
||||
body = body + " " + content_tag(:div, options[:label], class: "ui #{options[:label_color]} label") unless options[:label].empty?
|
||||
link_to(body, path, class: "#{'active' if current_page? path} item #{options[:class]}")
|
||||
end
|
||||
|
||||
##
|
||||
|
|
5
app/models/answer.rb
Normal file
5
app/models/answer.rb
Normal file
|
@ -0,0 +1,5 @@
|
|||
class Answer < ActiveRecord::Base
|
||||
belongs_to :user
|
||||
belongs_to :question
|
||||
has_many :comments
|
||||
end
|
4
app/models/comment.rb
Normal file
4
app/models/comment.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class Comment < ActiveRecord::Base
|
||||
belongs_to :user
|
||||
belongs_to :answer
|
||||
end
|
4
app/models/question.rb
Normal file
4
app/models/question.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class Question < ActiveRecord::Base
|
||||
belongs_to :user
|
||||
has_one :answer
|
||||
end
|
|
@ -7,6 +7,10 @@ class User < ActiveRecord::Base
|
|||
|
||||
# attr_accessor :login
|
||||
|
||||
has_many :questions, dependent: :destroy
|
||||
has_many :answers, dependent: :destroy
|
||||
has_many :comments, dependent: :destroy
|
||||
|
||||
SCREEN_NAME_REGEX = /\A[a-zA-Z0-9_]{1,16}\z/
|
||||
|
||||
validates :screen_name, presence: true, format: { with: SCREEN_NAME_REGEX }, uniqueness: { case_sensitive: false }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.container
|
||||
%h1 Resend confirmation instructions
|
||||
= bootstrap_form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f|
|
||||
= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f|
|
||||
= devise_error_messages!
|
||||
|
||||
= f.email_field :screen_name, autofocus: true, label: "User name"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.container
|
||||
%h1 Change your password
|
||||
= bootstrap_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f|
|
||||
= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f|
|
||||
= devise_error_messages!
|
||||
|
||||
= f.hidden_field :reset_password_token
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.container
|
||||
%h1 Forgot your password?
|
||||
= bootstrap_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f|
|
||||
= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f|
|
||||
= devise_error_messages!
|
||||
|
||||
= f.text_field :screen_name, autofocus: true, "User name"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.container
|
||||
%h1 Edit #{resource_name.to_s.humanize}
|
||||
= bootstrap_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f|
|
||||
= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f|
|
||||
= devise_error_messages!
|
||||
|
||||
= f.text_field :screen_name, autofocus: true, label: "User name"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
.container
|
||||
%h1 Sign up
|
||||
|
||||
= bootstrap_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
|
||||
= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
|
||||
= devise_error_messages!
|
||||
|
||||
= f.text_field :screen_name, autofocus: true, label: "User name"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
%h1 Sign in
|
||||
= render 'layouts/messages'
|
||||
|
||||
= bootstrap_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
|
||||
= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
|
||||
|
||||
= f.text_field :login, autofocus: true, label: "User name"
|
||||
= f.password_field :password, autocomplete: "off", label: "Password"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
%h1 Resend unlock instructions
|
||||
= render 'layouts/messages'
|
||||
|
||||
= bootstrap_form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f|
|
||||
= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f|
|
||||
= devise_error_messages!
|
||||
|
||||
= f.email_field :email, autofocus: true, label: "Email address"
|
||||
|
|
|
@ -1,26 +1,19 @@
|
|||
%nav.navbar.navbar-default.navbar-fixed-top{role: "navigation"}
|
||||
.container
|
||||
.navbar-header
|
||||
%button.navbar-toggle{"data-target" => "#j2-main-navbar-collapse", "data-toggle" => "collapse", type: "button"}
|
||||
%span.sr-only Toggle navigation
|
||||
%span.icon-bar
|
||||
%span.icon-bar
|
||||
%span.icon-bar
|
||||
%a.navbar-brand{href: "/"} justask2
|
||||
#j2-main-navbar-collapse.collapse.navbar-collapse
|
||||
%ul.nav.navbar-nav
|
||||
= nav_entry "Front", "/"
|
||||
%ul.nav.navbar-nav.navbar-right
|
||||
%nav.ui.fixed.inverted.main.menu
|
||||
%h3.header.item justask
|
||||
= nav_entry "Home", "/", icon: "home"
|
||||
- if user_signed_in?
|
||||
%li.dropdown
|
||||
%a.dropdown-toggle{href: "#", "data-toggle" => "dropdown"}
|
||||
= current_user.screen_name
|
||||
%b.caret
|
||||
%ul.dropdown-menu
|
||||
%li= link_to "Profile", edit_user_registration_path
|
||||
%li= link_to "Settings", "#"
|
||||
%li.divider
|
||||
%li= link_to "Logout", destroy_user_session_path, method: :delete
|
||||
= nav_entry "Inbox", "/inbox", icon: "inbox", label: "2"
|
||||
- else
|
||||
= nav_entry "Sign in", new_user_session_path
|
||||
= nav_entry "Sign up", new_user_registration_path
|
||||
= nav_entry "About", "/about", icon: ""
|
||||
.right.menu
|
||||
- if user_signed_in?
|
||||
.ui.dropdown.item
|
||||
= current_user.screen_name
|
||||
= semantic_icon "dropdown"
|
||||
.menu
|
||||
= link_to "Profile", edit_user_registration_path, class: "item"
|
||||
= link_to "Settings", "#", class: "item"
|
||||
= link_to "Logout", destroy_user_session_path, method: :delete, class: "item"
|
||||
- else
|
||||
= nav_entry "Sign in", new_user_session_path #, "right floated text"
|
||||
= nav_entry "Sign up", new_user_registration_path #, "right floated text"
|
|
@ -1,7 +1,7 @@
|
|||
!!! 5
|
||||
%html
|
||||
%head
|
||||
%title justask2
|
||||
%title justask
|
||||
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
|
||||
= javascript_include_tag 'application', 'data-turbolinks-track' => true
|
||||
= csrf_meta_tags
|
||||
|
@ -11,5 +11,5 @@
|
|||
- if Rails.env.development?
|
||||
%hr
|
||||
.container
|
||||
%p.text-danger EVIL DEBUG MODE OF DOOM ENABLED!!!
|
||||
%p.text-danger Debug output:
|
||||
= debug params
|
|
@ -6,7 +6,7 @@ require 'rails/all'
|
|||
# you've limited to :test, :development, or :production.
|
||||
Bundler.require(*Rails.groups)
|
||||
|
||||
module Justask2
|
||||
module Justask
|
||||
class Application < Rails::Application
|
||||
# Settings in config/environments/* take precedence over those specified here.
|
||||
# Application configuration should go into files in config/initializers
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
# SQLite version 3.x
|
||||
# gem install sqlite3
|
||||
#
|
||||
# Ensure the SQLite 3 gem is defined in your Gemfile
|
||||
# gem 'sqlite3'
|
||||
#
|
||||
default: &default
|
||||
adapter: sqlite3
|
||||
pool: 5
|
||||
timeout: 5000
|
||||
|
||||
development:
|
||||
<<: *default
|
||||
database: db/development.sqlite3
|
||||
|
||||
# Warning: The database defined as "test" will be erased and
|
||||
# re-generated from your development database when you run "rake".
|
||||
# Do not set this db to the same as development or production.
|
||||
test:
|
||||
<<: *default
|
||||
database: db/test.sqlite3
|
||||
|
||||
production:
|
||||
<<: *default
|
||||
database: db/production.sqlite3
|
42
config/database.yml.mysql
Normal file
42
config/database.yml.mysql
Normal file
|
@ -0,0 +1,42 @@
|
|||
#
|
||||
# PRODUCTION
|
||||
#
|
||||
production:
|
||||
adapter: mysql2
|
||||
encoding: utf8
|
||||
collation: utf8_general_ci
|
||||
reconnect: false
|
||||
database: justask_production
|
||||
pool: 10
|
||||
username: justask
|
||||
password: "hack me"
|
||||
# host: localhost
|
||||
# socket: /tmp/mysql.sock
|
||||
|
||||
#
|
||||
# Development specific
|
||||
#
|
||||
development:
|
||||
adapter: mysql2
|
||||
encoding: utf8
|
||||
collation: utf8_general_ci
|
||||
reconnect: false
|
||||
database: justask_development
|
||||
pool: 5
|
||||
username: root
|
||||
password: "hack me twice"
|
||||
# socket: /tmp/mysql.sock
|
||||
|
||||
# Warning: The database defined as "test" will be erased and
|
||||
# re-generated from your development database when you run "rake".
|
||||
# Do not set this db to the same as development or production.
|
||||
test: &test
|
||||
adapter: mysql2
|
||||
encoding: utf8
|
||||
collation: utf8_general_ci
|
||||
reconnect: false
|
||||
database: justask_test
|
||||
pool: 5
|
||||
username: root
|
||||
password: "hack me twice"
|
||||
# socket: /tmp/mysql.sock
|
34
config/database.yml.postgres
Normal file
34
config/database.yml.postgres
Normal file
|
@ -0,0 +1,34 @@
|
|||
#
|
||||
# PRODUCTION
|
||||
#
|
||||
production:
|
||||
adapter: postgresql
|
||||
encoding: unicode
|
||||
database: justask_production
|
||||
pool: 10
|
||||
# username: justask
|
||||
# password:
|
||||
# host: localhost
|
||||
# port: 5432
|
||||
|
||||
#
|
||||
# Development specific
|
||||
#
|
||||
development:
|
||||
adapter: postgresql
|
||||
encoding: unicode
|
||||
database: justask_development
|
||||
pool: 5
|
||||
username: postgres
|
||||
password:
|
||||
|
||||
# Warning: The database defined as "test" will be erased and
|
||||
# re-generated from your development database when you run "rake".
|
||||
# Do not set this db to the same as development or production.
|
||||
test: &test
|
||||
adapter: postgresql
|
||||
encoding: unicode
|
||||
database: justask_test
|
||||
pool: 5
|
||||
username: postgres
|
||||
password:
|
|
@ -1,3 +1,3 @@
|
|||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
Rails.application.config.session_store :cookie_store, key: '_justask2_session'
|
||||
Rails.application.config.session_store :cookie_store, key: '_justask_session'
|
||||
|
|
13
db/migrate/20140801174930_create_questions.rb
Normal file
13
db/migrate/20140801174930_create_questions.rb
Normal file
|
@ -0,0 +1,13 @@
|
|||
class CreateQuestions < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :questions do |t|
|
||||
t.string :content
|
||||
t.boolean :author_is_anonymous
|
||||
t.string :author_name
|
||||
t.string :author_email
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
add_index :questions, [:user_id, :created_at]
|
||||
end
|
||||
end
|
14
db/migrate/20140801175112_create_answers.rb
Normal file
14
db/migrate/20140801175112_create_answers.rb
Normal file
|
@ -0,0 +1,14 @@
|
|||
class CreateAnswers < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :answers do |t|
|
||||
t.string :content
|
||||
t.integer :question_id
|
||||
t.integer :comments
|
||||
t.integer :likes
|
||||
t.integer :user_id
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
add_index :answers, [:user_id, :created_at]
|
||||
end
|
||||
end
|
12
db/migrate/20140801175137_create_comments.rb
Normal file
12
db/migrate/20140801175137_create_comments.rb
Normal file
|
@ -0,0 +1,12 @@
|
|||
class CreateComments < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :comments do |t|
|
||||
t.string :content
|
||||
t.integer :answer_id
|
||||
t.integer :user_id
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
add_index :comments, [:user_id, :created_at]
|
||||
end
|
||||
end
|
45
db/schema.rb
45
db/schema.rb
|
@ -11,7 +11,44 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20140801103309) do
|
||||
ActiveRecord::Schema.define(version: 20140801175137) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
||||
create_table "answers", force: true do |t|
|
||||
t.string "content"
|
||||
t.integer "question_id"
|
||||
t.integer "comments"
|
||||
t.integer "likes"
|
||||
t.integer "user_id"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
end
|
||||
|
||||
add_index "answers", ["user_id", "created_at"], name: "index_answers_on_user_id_and_created_at", using: :btree
|
||||
|
||||
create_table "comments", force: true do |t|
|
||||
t.string "content"
|
||||
t.integer "answer_id"
|
||||
t.integer "user_id"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
end
|
||||
|
||||
add_index "comments", ["user_id", "created_at"], name: "index_comments_on_user_id_and_created_at", using: :btree
|
||||
|
||||
create_table "questions", force: true do |t|
|
||||
t.string "content"
|
||||
t.boolean "author_is_anonymous"
|
||||
t.string "author_name"
|
||||
t.string "author_email"
|
||||
t.integer "user_id"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
end
|
||||
|
||||
add_index "questions", ["user_id", "created_at"], name: "index_questions_on_user_id_and_created_at", using: :btree
|
||||
|
||||
create_table "users", force: true do |t|
|
||||
t.string "email", default: "", null: false
|
||||
|
@ -29,8 +66,8 @@ ActiveRecord::Schema.define(version: 20140801103309) do
|
|||
t.string "screen_name"
|
||||
end
|
||||
|
||||
add_index "users", ["email"], name: "index_users_on_email", unique: true
|
||||
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
|
||||
add_index "users", ["screen_name"], name: "index_users_on_screen_name", unique: true
|
||||
add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
|
||||
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
|
||||
add_index "users", ["screen_name"], name: "index_users_on_screen_name", unique: true, using: :btree
|
||||
|
||||
end
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
require 'simplecov'
|
||||
SimpleCov.start
|
||||
|
||||
ENV['RAILS_ENV'] ||= 'test'
|
||||
require File.expand_path('../../config/environment', __FILE__)
|
||||
require 'rails/test_help'
|
||||
|
|
Loading…
Reference in a new issue