Skip to content

Instantly share code, notes, and snippets.

@harshamv
Last active August 29, 2015 14:10
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save harshamv/afe9a31ecd0763bdcfc2 to your computer and use it in GitHub Desktop.
Save harshamv/afe9a31ecd0763bdcfc2 to your computer and use it in GitHub Desktop.
Setting up a New Rails App
# Create a new Rails Project
rails new <project-name> -d mysql
# Run Bundler
bundle install
# Database Initiation
rake db:create
# Dump SQL file into MySQL
mysql -u hmv -p <database-name> < <database-file>
# Generate SQL Schema from the MySQL tables
rake db:schema:dump
# Creating a Git Repo for Versioning and Collaboration
git init
git remote add origin https://<Username>:<Password>@bitbucket.org/harshamv/<Project-Name>.git
git add .
git commit -m 'Initial commit'
git push -u origin master
# Allowing Git Versioning for Developers
# Add this to the.gotignore /config/database.yml
git rm --cached config/database.yml
# Create the Initial Migration File
rails generate migration initial_schema_dump
# Copy the Content from the Schema file to the migration file and run the following command
rake db:migrate
# Generate Models for the Schema
rails g model MyModel --skip_migration
# Generate Namescoped Controller/Views Scafolding
rails g scaffold_controller <namescope>/<controller-name> name:string slug:string description:string icon_xlarge:string icon_large:string icon_medium:string icon_small:string status:integer
# See the Routes of the Application
rake routes
# Dump Data in data.yml
rake db:data:dump
# Load contents of db/data.yml into the database
rake db:data:load
# app/uploaders/display_photo_uploader.rb
# Add this in the Model
mount_uploader :display_photo, DisplayPhotoUploader
# encoding: utf-8
class DisplayPhotoUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
include CarrierWave::RMagick
include CarrierWave::Processing::RMagick
# include CarrierWave::MiniMagick
include CarrierWave::ImageOptimizer
# Choose what kind of storage to use for this uploader:
storage :file
# storage :fog
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted: #{model.name.to_s.underscore}
def store_dir
"uploads/#{model.class.to_s.pluralize.parameterize}/#{model.id}/"
end
process :optimize => [{ quality: 90 }]
#process :watermark
#process :blur => [0, 8]
# Provide a default URL as a default if there hasn't been a file uploaded:
# def default_url
# # For Rails 3.1+ asset pipeline compatibility:
# # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
#
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
# end
# Process files as they are uploaded:
# process :scale => [200, 300]
#
# def scale(width, height)
# # do something
# end
# Create different versions of your uploaded files:
# version :thumb do
# process :resize_to_fit => [50, 50]
# end
version :medium do
process :resize_to_fill => [128, 128]
end
version :small do
process :resize_to_fill => [48, 48]
end
version :tiny do
process :resize_to_fill => [32, 32]
end
# Add a white list of extensions which are allowed to be uploaded.
# For images you might use something like this:
def extension_white_list
%w(jpg jpeg gif png)
end
# Override the filename of the uploaded files:
# Avoid using model.id or version_name here, see uploader/store.rb for details.
# def filename
# "something.jpg" if original_filename
# end
def filename
if original_filename
"#{model.name.parameterize}-#{secure_token(8)}.#{file.extension}"
end
end
protected
def secure_token(length=16)
var = :"@#{mounted_as}_secure_token"
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.hex(length/2))
end
# def watermark
# manipulate! do |img|
# logo = Magick::Image.read("#{Rails.root}/app/assets/images/watermark.png").first
# img = img.composite(logo, Magick::SouthEastGravity, 15, 15, Magick::OverCompositeOp)
# end
# end
end
# over writing the conflict slug
# config/initializers/friendly_id.rb
module FriendlyId
module Slugged
def resolve_friendly_id_conflict(candidates)
candidates.first + friendly_id_config.sequence_separator + SecureRandom.hex(3)
end
end
end
gem 'friendly_id'
gem 'will_paginate'
gem 'will_paginate-bootstrap'
#gem 'bootstrap-will_paginate'
gem 'acts-as-taggable-on'
gem 'acts_as_votable'
gem 'carrierwave'
gem 'rmagick', :require => 'RMagick'
gem 'carrierwave-processing'
gem 'carrierwave-imageoptimizer'
gem 'seed_dump', '~> 3.1.0'
gem 'yaml_db', github: 'jetthoughts/yaml_db', ref: 'fb4b6bd7e12de3cffa93e0a298a1e5253d7e92ba'
gem 'devise'
gem 'omniauth'
gem 'omniauth-facebook'
#gem 'omniauth-twitter'
gem 'geokit-rails'
gem 'geocoder'
gem 'httparty'
gem 'browser'
gem 'useragent', :require=>'useragent'#
# Manipulating Time
# Check this for other formats- https://hackhands.com/format-datetime-ruby/
@event.event_date.strftime("%b %d, %Y")
@Muddan
Copy link

Muddan commented Dec 22, 2014

Will make use of it, even will commit further developments :) Thanks Harsha

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment