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 68e0be1
Show file tree
Hide file tree
Showing 11 changed files with 246 additions and 50 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
59 changes: 59 additions & 0 deletions config/locales/devise.en.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Additional translations at https://github.com/plataformatec/devise/wiki/I18n

en:
devise:
confirmations:
confirmed: "Your account was successfully confirmed."
send_instructions: "You will receive an email with instructions about how to confirm your account in a few minutes."
send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions about how to confirm your account in a few minutes."
failure:
already_authenticated: "You are already signed in."
inactive: "Your account is not activated yet."
invalid: "Invalid email or password."
locked: "Your account is locked."
last_attempt: "You have one more attempt before your account will be locked."
not_found_in_database: "Invalid email or password."
timeout: "Your session expired. Please sign in again to continue."
unauthenticated: "You need to sign in or sign up before continuing."
unconfirmed: "You have to confirm your account before continuing."
mailer:
confirmation_instructions:
subject: "Confirmation instructions"
reset_password_instructions:
subject: "Reset password instructions"
unlock_instructions:
subject: "Unlock Instructions"
omniauth_callbacks:
failure: "Could not authenticate you from %{kind} because \"%{reason}\"."
success: "Successfully authenticated from %{kind} account."
passwords:
no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided."
send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes."
send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes."
updated: "Your password was changed successfully. You are now signed in."
updated_not_active: "Your password was changed successfully."
registrations:
destroyed: "Bye! Your account was successfully cancelled. We hope to see you again soon."
signed_up: "Welcome! You have signed up successfully."
signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated."
signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked."
signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please open the link to activate your account."
update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and click on the confirm link to finalize confirming your new email address."
updated: "You updated your account successfully."
sessions:
signed_in: "Signed in successfully."
signed_out: "Signed out successfully."
unlocks:
send_instructions: "You will receive an email with instructions about how to unlock your account in a few minutes."
send_paranoid_instructions: "If your account exists, you will receive an email with instructions about how to unlock it in a few minutes."
unlocked: "Your account has been unlocked successfully. Please sign in to continue."
errors:
messages:
already_confirmed: "was already confirmed, please try signing in"
confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one"
expired: "has expired, please request a new one"
not_found: "not found"
not_locked: "was not locked"
not_saved:
one: "1 error prohibited this %{resource} from being saved:"
other: "%{count} errors prohibited this %{resource} from being saved:"
2 changes: 1 addition & 1 deletion config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@
end
end
#root 'contents#index'
mount Sidekiq::Web, at:'/sidekiq'
mount Sidekiq :: Web , at : '/sidekiq'
end
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 68e0be1

Please sign in to comment.