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_rails
and 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 .