Skip to content

Commit

Permalink
Added pg gem and removed mongo db related all changes. added migratio…
Browse files Browse the repository at this point in the history
…ns for User and Content models
  • Loading branch information
samu80 committed Dec 17, 2022
1 parent ef9be8f commit f3622d7
Show file tree
Hide file tree
Showing 13 changed files with 544 additions and 49 deletions.
65 changes: 46 additions & 19 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,26 +1,53 @@
source "https://rubygems.org"

# Declare your gem's dependencies in screamout.gemspec.
# Bundler will treat runtime dependencies like base dependencies, and
# development dependencies will be added by default to the :development group.
gemspec

# Declare any dependencies that are still in development here instead of in
# your gemspec. These might include edge Rails or gems from your path or
# Git. Remember to move these dependencies to your gemspec before releasing
# your gem to rubygems.org.

# To use debugger
# gem 'debugger'
gem 'mongoid'
gem 'jquery-ui-rails', '~> 5.0.5'
gem 'sass-rails', '4.0.3'
gem 'twitter-bootstrap-rails', '2.2.8'
gem 'simple_form', :git => 'git://github.com/plataformatec/simple_form.git'
source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.1'
gem 'mongoid', github:'mongoid/mongoid'
# 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
gem 'devise'
gem 'omniauth-google-oauth2'
gem 'omniauth'
gem 'simple_form'
gem 'mimemagic', github: 'mimemagicrb/mimemagic', ref: '01f92d86d15d85cfd0f20dabd025dcbd36a8a60f'
# Use jquery as the JavaScript library
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
gem 'twitter-typeahead-rails'
gem 'imgkit'
gem "jquery-rails"
gem 'pg', '~> 0.18'
gem 'activerecord'
# 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 'execjs' #for executing javascript from ruby

group :development, :test do #overrite existing..generate spec directory,,include the gem in multiple rails env
#gem 'debugger'
gem 'rspec-rails' , '2.14.2'
gem 'factory_girl_rails'
gem 'faker'
gem 'database_cleaner'
gem 'simplecov', '~> 0.7.1'
gem 'guard-rspec', require: false
end
gem 'mongoid-rspec' #tests beginning with 'should'
gem 'mongoid_taggable'
gem 'mongoid_rateable', :git => 'git://github.com/PerfectMemory/mongoid_rateable.git'
gem "bson"
Expand Down
112 changes: 112 additions & 0 deletions app/controllers/contents_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
class ContentsController < ApplicationController

def index
#binding.pry
@contents = Content.all.desc(:created_at)
@con = Content.new
@c = []
#@contents = Content.tagged_with_all(/#{params[:q]}/)
#@conc = content_to_hash(@content_selected)
end


def show
@content = Content.find(params[:id])
end

def new
@content = Content.new
@con = []
end

def details
@content = Content.find(params[:id])
respond_to do |format|
format.js {}
end
end

def create
@content = Content.new(content_params_input)
@content.image_file_name = @content.title

if @content.save
ImageWorker.perform_async(@content.id.to_s)
respond_to do |format|
format.html {redirect_to contents_path}
end
else
respond_to do |format|
format.html { render action: 'new' }

end
end
end

def edit
@content = Content.find(params[:id])
end

def destroy
@content = Content.where(id: params[:id]).first

if @content.destroy
redirect_to contents_path
else
#flash[:notice] = ' not deleted'
flash.now[:error] = @content.errors.messages
render action: 'index'
end
end


def update
@content = Content.find(params[:id])
@con = @content.tags.split(",")
@con = tags_to_hash(@con)
if @content.update_attributes(content_params_input)
redirect_to contents_path
else
render action: 'edit'
end
end

def tags
@contents = Content.tagged_with_all(/#{params[:q]}/)
@tags = @contents.collect(&:tag_map).flatten.select{|t| t[:name] =~ /#{params[:q]}/}

respond_to do |format|
format.html {render html: @tags}
format.json { render json: @tags}
end
end

def content_ids
@tags_selected = Content.tags.select{|e| e =~ /#{params[:q]}/}
@content_selected = Content.where(:tags_array.in => @tags_selected).to_a

respond_to do |format|
format.html
format.json {render json: @content_selected}
end
end

private
def content_params_input
params.require(:content).permit(:url,:photo, :title, :tags, :rates, :user_id)
end

def tags_to_hash(cons)
cons.map do |con|
{id: con, name: con}
end
end
#not required************************************

def content_to_hash(cons)
cons.map do |cons|
{id: cons[:_id].to_s, url: cons.url, title: cons.title, photo_url:cons.photo.url}
end
#binding.pry
end
end
26 changes: 13 additions & 13 deletions app/models/screamout/content.rb
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
module Screamout
module Screamout < ActiveRecord::Base
class Content
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Taggable
include Mongoid::Paperclip
# include Mongoid::Document
# include Mongoid::Timestamps
# include Mongoid::Taggable
# include Mongoid::Paperclip

IMAGE_PATH = "#{Rails.root}/public/snapshots/"
#IMAGE_WIDTH = 100
IMAGE_HEIGHT = 600

field :title, type: String
field :url, type: String
field :image_file_name, type:String
has_mongoid_attached_file :photo,:styles => {:original => ['1920x1680>', :jpg],:small => ['220x180!', :jpg]}
# field :title, type: String
# field :url, type: String
# field :image_file_name, type:String
# has_mongoid_attached_file :photo,:styles => {:original => ['1920x1680>', :jpg],:small => ['220x180!', :jpg]}

rateable range: (0..5)
belongs_to :user
#validates :title, presence: true
validates :url, presence: true, uniqueness: true, format: { with: /(^$)|(^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}[:]?(([0-9]{1,5})?\/?.*)$)/i}
validates :image_file_name, presence: true
validates_attachment_content_type :photo, :content_type => ["image/jpg", "image/jpeg", "image/png", "application/pdf"]
# validates_attachment_content_type :photo, :content_type => ["image/jpg", "image/jpeg", "image/png", "application/pdf"]


def image_file_name=(title)
Expand All @@ -32,17 +32,17 @@ def name

def tag_map
tags.split(",").collect{|t| {id: t, name: t}}
end
end

def as_json(options ={})
options = {only: [:_id,:title, :url, :tags_array], methods: [:id, :photo_url, :name, :user_id, :user_photo_url]}
super
end

def id
self._id.to_s
end

def photo_url
self.photo.url(:small)
end
Expand Down
8 changes: 8 additions & 0 deletions app/models/screamout/user.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module Screamout
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
end
Loading

0 comments on commit f3622d7

Please sign in to comment.