Daily Record http://daily-record.herokuapp.com
Simple use multi-track collaborative music blog
Starting off following this tutorial. It’s kind of old, but let’s see what we can get out of it anyway. For portions that I know are out of date, I am referencing onemonthrails.
rails g scaffold tracks author:string title:string reflection:text rake db:migrate
gem 'aws-sdk', '~> 1.47.0'
gem 'paperclip', '~> 4.2.0'
https://github.com/plataformatec/devise
gem 'devise' bundle install rails g devise:install
- [ ] Define default url options in environments files
- [ ] development.rb
config.action_mailer.default_url_options = { host: 'localhost:3000' } - [ ] production.rb
config.action_mailer.default_url_options = { host: 'http://daily-record.herokuapp.com' }
- [ ] development.rb
- [ ] Define root_url to something
root to: "tracks#index" - [ ] Place flash messages
<p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p> - [ ] Generate Devise views
rails g devise:views - [ ] Generate Devise User model
rails g devise User rake db:migrate
belongs_to :user has_attached_file :audio
rails g paperclip track audio rake db:migrate
def track_params params.require(:track).permit(:author, :title, :reflection, :audio) end
- [ ] As of version 4.0, all attachments are required to include a
content_type validation, a file_name validation, or to explicitly state
that they’re not going to have either. Paperclip raises
‘MissingRequiredValidatorError’ if you do not do this.
- [ ] add to Track Model
validates_attachment_content_type :audio, :content_type => ['audio/mp3','audio/mpeg','audio/wav']
- [ ] add to Track Model
- [ ] WAV type?
- [ ] Form
<div class="form-group"> <%= f.label :audio %> <%= f.file_field :audio, class: "form-control" %> </div> - [ ] Show
http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/audio_tag
<p> <strong>Audio:</strong> <%= audio_tag @track.audio.url %> </p> - [ ] Index
./app/views/tracks/index.html.erb
<td><%= audio_tag track.audio.url %></td>
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['AWS_BUCKET'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
- [ ] Create an S3 bucket in AWS
dailyRecordTracks
- [ ] Grant permission to everyone to upate/delete, edit, view
heroku config:set AWS_BUCKET=dailyRecordTracks heroku config:set AWS_ACCESS_KEY_ID=*** heroku config:set AWS_SECRET_ACCESS_KEY=***
- [ ] MediaelementRails
gem 'mediaelement_rails' bundle install//= require mediaelement_rails./app/assets/stylesheets/application.css.scss Stylesheets
*= require mediaelement_railsand optionally:
*= require mediaelement_rails/mejs-skins
rails g migration add_user_id_to_tracks user_id:integer:index rake db:migrate
belongs_to :user
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
:
has_many :tracks end
- [ ] Create custom bootstrap stylesheet
./app/assets/stylesheets/bootstrap_and_customization.css.scss
- [ ] create file
echo "@import 'bootsrap';" > app/assets/stylesheets/bootstrap_and_customization.css.scss
NOTE Place new variables before “@import ‘bootstrap’”
- [ ] Fonts
EXAMPLE:
@import url(http://fonts.googleapis.com/css?family=Roboto:400,100,100italic,700italic,700|Clicker+Script);- [ ] Variables
$phill-grn: #3f8000; - [ ] create file
- [ ] Require Bootstrap’s Javascript, after jquery_ujs
./app/assets/javascripts/application.js
//= require jquery //= require jquery_ujs //= require bootstrap //= require turbolinks //= require_tree .