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 04e7992
Show file tree
Hide file tree
Showing 9 changed files with 186 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
9 changes: 9 additions & 0 deletions db/migrate/20221217151733_create_contents.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class CreateContents < ActiveRecord::Migration
def change
create_table :contents do |t|
t.string :title
t.string :url
t.string :image_file_name
end
end
end
2 changes: 1 addition & 1 deletion lib/screamout/engine.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ module Screamout
class Engine < ::Rails::Engine
isolate_namespace Screamout
config.generators do |g|
g.orm :mongoid
g.orm :active_record
end
end
end
3 changes: 2 additions & 1 deletion spec/dummy/config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@

Bundler.require(*Rails.groups)
require "screamout"
require 'rails/all'

module Dummy
class Application < Rails::Application
config.generators.orm = :active_record
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
Expand All @@ -26,4 +28,3 @@ class Application < Rails::Application
# config.i18n.default_locale = :de
end
end

1 change: 1 addition & 0 deletions spec/dummy/config/environments/development.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

# Do not eager load code on boot.
config.eager_load = false
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

# Show full error reports and disable caching.
config.consider_all_requests_local = true
Expand Down
13 changes: 0 additions & 13 deletions spec/dummy/config/mongoid.yml.ci

This file was deleted.

4 changes: 2 additions & 2 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
config.after(:each) do
DatabaseCleaner.clean
end
#config.before(:each) { @routes = UserManager::Engine.routes }
#config.before(:each) { @routes = UserManager::Engine.routes }
# If true, the base class of anonymous controllers will be inferred
# automatically. This will be the default behavior in future versions of
# rspec-rails.
Expand All @@ -63,7 +63,7 @@

I18n.enforce_available_locales = false

config.include Mongoid::Matchers
# config.include Mongoid::Matchers

config.extend ControllerHelper, type: :controller
end

0 comments on commit 04e7992

Please sign in to comment.