2017-03-23 21:46:56 +00:00
|
|
|
### Lobsters Rails Project
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2017-07-17 17:31:34 +00:00
|
|
|
This is the
|
2017-07-06 21:26:10 +00:00
|
|
|
[quite sad](https://www.reddit.com/r/rails/comments/6jz7tq/source_code_lobsters_a_hacker_news_clone_built/)
|
|
|
|
source code to the site operating at
|
|
|
|
[https://lobste.rs](https://lobste.rs).
|
|
|
|
It is a Rails 5 codebase and uses a SQL (MariaDB in production) backend for the database.
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2017-10-01 18:38:20 +00:00
|
|
|
While you are free to fork this code and modify it (according to the [license](https://github.com/lobsters/lobsters/blob/master/LICENSE))
|
2013-02-25 01:52:09 +00:00
|
|
|
to run your own link aggregation website, this source code repository and bug
|
|
|
|
tracker are only for the site operating at [lobste.rs](https://lobste.rs/).
|
|
|
|
Please do not use the bug tracker for support related to operating your own
|
|
|
|
site unless you are contributing code that will also benefit [lobste.rs](https://lobste.rs/).
|
|
|
|
|
2017-03-23 21:46:56 +00:00
|
|
|
#### Contributing bugfixes and new features
|
2013-02-25 01:52:09 +00:00
|
|
|
|
2017-10-01 18:38:20 +00:00
|
|
|
Please see the [CONTRIBUTING](https://github.com/lobsters/lobsters/blob/master/CONTRIBUTING.md)
|
2013-02-25 01:52:09 +00:00
|
|
|
file.
|
|
|
|
|
2017-03-23 21:46:56 +00:00
|
|
|
#### Initial setup
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2017-10-03 18:59:58 +00:00
|
|
|
* Install the version of Ruby listed in `.ruby-verison`.
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2012-09-18 15:13:25 +00:00
|
|
|
* Checkout the lobsters git tree from Github
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2017-10-01 18:38:20 +00:00
|
|
|
$ git clone git://github.com/lobsters/lobsters.git
|
2012-09-02 14:34:39 +00:00
|
|
|
$ cd lobsters
|
2017-07-17 17:31:34 +00:00
|
|
|
lobsters$
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2017-08-22 14:49:26 +00:00
|
|
|
* Install Nodejs, needed (or other execjs) for uglifier
|
|
|
|
|
|
|
|
Fedora: sudo yum install nodejs
|
|
|
|
Ubuntu: sudo apt-get install nodejs
|
|
|
|
OSX: brew install nodejs
|
|
|
|
|
2012-09-18 15:13:25 +00:00
|
|
|
* Run Bundler to install/bundle gems needed by the project:
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2012-09-02 14:34:39 +00:00
|
|
|
lobsters$ bundle
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2013-05-26 17:56:31 +00:00
|
|
|
* Create a MySQL (other DBs supported by ActiveRecord may work, only MySQL and
|
|
|
|
MariaDB have been tested) database, username, and password and put them in a
|
2017-07-17 17:31:34 +00:00
|
|
|
`config/database.yml` file. You will also want a separate database for
|
|
|
|
running tests:
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2012-08-24 16:52:21 +00:00
|
|
|
development:
|
|
|
|
adapter: mysql2
|
2013-05-26 17:39:52 +00:00
|
|
|
encoding: utf8mb4
|
2012-08-24 16:52:21 +00:00
|
|
|
reconnect: false
|
|
|
|
database: lobsters_dev
|
|
|
|
socket: /tmp/mysql.sock
|
2017-07-17 17:31:34 +00:00
|
|
|
username: *dev_username*
|
|
|
|
password: *dev_password*
|
2012-08-24 16:52:21 +00:00
|
|
|
|
|
|
|
test:
|
2017-07-17 17:31:34 +00:00
|
|
|
adapter: mysql2
|
|
|
|
encoding: utf8mb4
|
|
|
|
reconnect: false
|
|
|
|
database: lobsters_test
|
|
|
|
socket: /tmp/mysql.sock
|
|
|
|
username: *test_username*
|
|
|
|
password: *test_password*
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2012-09-18 15:13:25 +00:00
|
|
|
* Load the schema into the new database:
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2012-09-02 14:34:39 +00:00
|
|
|
lobsters$ rake db:schema:load
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2013-06-30 06:29:51 +00:00
|
|
|
* Create a `config/initializers/secret_token.rb` file, using a randomly
|
|
|
|
generated key from the output of `rake secret`:
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2014-08-04 02:47:53 +00:00
|
|
|
Lobsters::Application.config.secret_key_base = 'your random secret here'
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2013-06-30 06:29:51 +00:00
|
|
|
* Define your site's name and default domain, which are used in various places,
|
|
|
|
in a `config/initializers/production.rb` or similar file:
|
|
|
|
|
|
|
|
class << Rails.application
|
|
|
|
def domain
|
|
|
|
"example.com"
|
|
|
|
end
|
|
|
|
|
|
|
|
def name
|
|
|
|
"Example News"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
Rails.application.routes.default_url_options[:host] = Rails.application.domain
|
|
|
|
|
2016-03-31 19:24:57 +00:00
|
|
|
* Put your site's custom CSS in `app/assets/stylesheets/local`.
|
|
|
|
|
2015-05-10 15:17:57 +00:00
|
|
|
* Seed the database to create an initial administrator user and at least one tag:
|
2012-08-24 15:39:05 +00:00
|
|
|
|
2015-05-10 15:17:57 +00:00
|
|
|
lobsters$ rake db:seed
|
|
|
|
created user: test, password: test
|
|
|
|
created tag: test
|
2012-09-02 14:34:39 +00:00
|
|
|
|
2012-09-18 15:13:25 +00:00
|
|
|
* Run the Rails server in development mode. You should be able to login to
|
2013-06-30 06:29:51 +00:00
|
|
|
`http://localhost:3000` with your new `test` user:
|
2012-09-02 14:34:39 +00:00
|
|
|
|
|
|
|
lobsters$ rails server
|
2016-04-24 01:20:55 +00:00
|
|
|
|
|
|
|
* In production, set up crontab or another scheduler to run regular jobs:
|
|
|
|
|
2016-06-22 19:44:08 +00:00
|
|
|
*/5 * * * * cd /path/to/lobsters && env RAILS_ENV=production sh -c 'bundle exec ruby script/mail_new_activity; bundle exec ruby script/post_to_twitter'
|