├── log
└── .keep
├── storage
└── .keep
├── tmp
├── .keep
├── pids
│ └── .keep
└── storage
│ └── .keep
├── vendor
├── .keep
└── javascript
│ └── .keep
├── lib
├── assets
│ └── .keep
└── tasks
│ └── .keep
├── public
├── favicon.ico
├── apple-touch-icon.png
├── apple-touch-icon-precomposed.png
├── robots.txt
├── 500.html
├── 422.html
└── 404.html
├── test
├── helpers
│ └── .keep
├── mailers
│ └── .keep
├── models
│ ├── .keep
│ ├── trip_test.rb
│ ├── user_test.rb
│ ├── article_test.rb
│ ├── museum_test.rb
│ └── trip_museum_test.rb
├── system
│ └── .keep
├── controllers
│ ├── .keep
│ ├── trips_controller_test.rb
│ ├── users_controller_test.rb
│ ├── articles_controller_test.rb
│ └── welcome_controller_test.rb
├── integration
│ └── .keep
├── fixtures
│ ├── files
│ │ └── .keep
│ ├── trip_museums.yml
│ ├── articles.yml
│ ├── users.yml
│ ├── trips.yml
│ └── museums.yml
├── application_system_test_case.rb
├── channels
│ └── application_cable
│ │ └── connection_test.rb
└── test_helper.rb
├── app
├── assets
│ ├── images
│ │ └── .keep
│ ├── config
│ │ └── manifest.js
│ └── stylesheets
│ │ └── application.css
├── models
│ ├── concerns
│ │ └── .keep
│ ├── user.rb
│ ├── museum.rb
│ ├── trip.rb
│ ├── application_record.rb
│ └── trip_museum.rb
├── controllers
│ ├── concerns
│ │ └── .keep
│ ├── application_controller.rb
│ ├── users_controller.rb
│ └── trips_controller.rb
├── views
│ ├── layouts
│ │ ├── mailer.text.erb
│ │ ├── mailer.html.erb
│ │ └── application.html.erb
│ ├── users
│ │ └── new.html.erb
│ └── trips
│ │ ├── new.html.erb
│ │ ├── museums.html.erb
│ │ ├── index.html.erb
│ │ └── show.html.erb
├── helpers
│ ├── trips_helper.rb
│ ├── users_helper.rb
│ ├── welcome_helper.rb
│ ├── articles_helper.rb
│ └── application_helper.rb
├── channels
│ └── application_cable
│ │ ├── channel.rb
│ │ └── connection.rb
├── mailers
│ └── application_mailer.rb
├── javascript
│ ├── application.js
│ └── controllers
│ │ ├── hello_controller.js
│ │ ├── application.js
│ │ └── index.js
└── jobs
│ └── application_job.rb
├── .ruby-version
├── entrypoint.sh
├── bin
├── rake
├── importmap
├── rails
├── setup
├── crawl
└── bundle
├── docker-compose.yml
├── config
├── environment.rb
├── boot.rb
├── cable.yml
├── importmap.rb
├── initializers
│ ├── filter_parameter_logging.rb
│ ├── permissions_policy.rb
│ ├── assets.rb
│ ├── inflections.rb
│ └── content_security_policy.rb
├── credentials.yml.enc
├── routes.rb
├── database.yml
├── application.rb
├── locales
│ └── en.yml
├── storage.yml
├── puma.rb
└── environments
│ ├── test.rb
│ ├── development.rb
│ └── production.rb
├── config.ru
├── Rakefile
├── db
├── migrate
│ ├── 20220915085356_create_articles.rb
│ ├── 20220916015713_create_users.rb
│ ├── 20220916022020_create_museums.rb
│ ├── 20220916022050_create_trip_museums.rb
│ └── 20220916133622_create_trips.rb
├── schema.rb
└── seeds.rb
├── .gitattributes
├── Dockerfile
├── .vscode
└── launch.json
├── .gitignore
├── README.md
├── Gemfile
└── Gemfile.lock
/log/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/storage/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tmp/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vendor/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lib/assets/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lib/tasks/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/helpers/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/mailers/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/models/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/system/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tmp/pids/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tmp/storage/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/assets/images/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/controllers/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/integration/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vendor/javascript/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.ruby-version:
--------------------------------------------------------------------------------
1 | ruby-2.7.2
2 |
--------------------------------------------------------------------------------
/app/models/concerns/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/apple-touch-icon.png:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/fixtures/files/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/controllers/concerns/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/apple-touch-icon-precomposed.png:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/layouts/mailer.text.erb:
--------------------------------------------------------------------------------
1 | <%= yield %>
2 |
--------------------------------------------------------------------------------
/app/helpers/trips_helper.rb:
--------------------------------------------------------------------------------
1 | module TripsHelper
2 | end
3 |
--------------------------------------------------------------------------------
/app/helpers/users_helper.rb:
--------------------------------------------------------------------------------
1 | module UsersHelper
2 | end
3 |
--------------------------------------------------------------------------------
/app/helpers/welcome_helper.rb:
--------------------------------------------------------------------------------
1 | module WelcomeHelper
2 | end
3 |
--------------------------------------------------------------------------------
/app/models/user.rb:
--------------------------------------------------------------------------------
1 | class User < ApplicationRecord
2 | end
3 |
--------------------------------------------------------------------------------
/entrypoint.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | bin/rails server -b 0.0.0.0
--------------------------------------------------------------------------------
/app/helpers/articles_helper.rb:
--------------------------------------------------------------------------------
1 | module ArticlesHelper
2 | end
3 |
--------------------------------------------------------------------------------
/app/models/museum.rb:
--------------------------------------------------------------------------------
1 | class Museum < ApplicationRecord
2 | end
3 |
--------------------------------------------------------------------------------
/app/helpers/application_helper.rb:
--------------------------------------------------------------------------------
1 | module ApplicationHelper
2 | end
3 |
--------------------------------------------------------------------------------
/app/models/trip.rb:
--------------------------------------------------------------------------------
1 | class Trip < ApplicationRecord
2 | belongs_to :user
3 | end
4 |
--------------------------------------------------------------------------------
/app/controllers/application_controller.rb:
--------------------------------------------------------------------------------
1 | class ApplicationController < ActionController::Base
2 | end
3 |
--------------------------------------------------------------------------------
/app/models/application_record.rb:
--------------------------------------------------------------------------------
1 | class ApplicationRecord < ActiveRecord::Base
2 | primary_abstract_class
3 | end
4 |
--------------------------------------------------------------------------------
/bin/rake:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | require_relative "../config/boot"
3 | require "rake"
4 | Rake.application.run
5 |
--------------------------------------------------------------------------------
/app/models/trip_museum.rb:
--------------------------------------------------------------------------------
1 | class TripMuseum < ApplicationRecord
2 | belongs_to :trip
3 | belongs_to :museum
4 | end
5 |
--------------------------------------------------------------------------------
/bin/importmap:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | require_relative "../config/application"
4 | require "importmap/commands"
5 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | # See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
2 |
--------------------------------------------------------------------------------
/app/channels/application_cable/channel.rb:
--------------------------------------------------------------------------------
1 | module ApplicationCable
2 | class Channel < ActionCable::Channel::Base
3 | end
4 | end
5 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.3'
2 | services:
3 | blog:
4 | image: 'yedf/rubyblog'
5 | ports:
6 | - '3000:3000'
7 |
8 |
--------------------------------------------------------------------------------
/app/channels/application_cable/connection.rb:
--------------------------------------------------------------------------------
1 | module ApplicationCable
2 | class Connection < ActionCable::Connection::Base
3 | end
4 | end
5 |
--------------------------------------------------------------------------------
/app/mailers/application_mailer.rb:
--------------------------------------------------------------------------------
1 | class ApplicationMailer < ActionMailer::Base
2 | default from: "from@example.com"
3 | layout "mailer"
4 | end
5 |
--------------------------------------------------------------------------------
/bin/rails:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | APP_PATH = File.expand_path("../config/application", __dir__)
3 | require_relative "../config/boot"
4 | require "rails/commands"
5 |
--------------------------------------------------------------------------------
/config/environment.rb:
--------------------------------------------------------------------------------
1 | # Load the Rails application.
2 | require_relative "application"
3 |
4 | # Initialize the Rails application.
5 | Rails.application.initialize!
6 |
--------------------------------------------------------------------------------
/test/models/trip_test.rb:
--------------------------------------------------------------------------------
1 | require "test_helper"
2 |
3 | class TripTest < ActiveSupport::TestCase
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/test/models/user_test.rb:
--------------------------------------------------------------------------------
1 | require "test_helper"
2 |
3 | class UserTest < ActiveSupport::TestCase
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/test/models/article_test.rb:
--------------------------------------------------------------------------------
1 | require "test_helper"
2 |
3 | class ArticleTest < ActiveSupport::TestCase
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/test/models/museum_test.rb:
--------------------------------------------------------------------------------
1 | require "test_helper"
2 |
3 | class MuseumTest < ActiveSupport::TestCase
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/test/models/trip_museum_test.rb:
--------------------------------------------------------------------------------
1 | require "test_helper"
2 |
3 | class TripMuseumTest < ActiveSupport::TestCase
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/app/assets/config/manifest.js:
--------------------------------------------------------------------------------
1 | //= link_tree ../images
2 | //= link_directory ../stylesheets .css
3 | //= link_tree ../../javascript .js
4 | //= link_tree ../../../vendor/javascript .js
5 |
--------------------------------------------------------------------------------
/config.ru:
--------------------------------------------------------------------------------
1 | # This file is used by Rack-based servers to start the application.
2 |
3 | require_relative "config/environment"
4 |
5 | run Rails.application
6 | Rails.application.load_server
7 |
--------------------------------------------------------------------------------
/app/javascript/application.js:
--------------------------------------------------------------------------------
1 | // Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
2 | import "@hotwired/turbo-rails"
3 | import "controllers"
4 |
--------------------------------------------------------------------------------
/test/controllers/trips_controller_test.rb:
--------------------------------------------------------------------------------
1 | require "test_helper"
2 |
3 | class TripsControllerTest < ActionDispatch::IntegrationTest
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/test/controllers/users_controller_test.rb:
--------------------------------------------------------------------------------
1 | require "test_helper"
2 |
3 | class UsersControllerTest < ActionDispatch::IntegrationTest
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/test/application_system_test_case.rb:
--------------------------------------------------------------------------------
1 | require "test_helper"
2 |
3 | class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
4 | driven_by :selenium, using: :chrome, screen_size: [1400, 1400]
5 | end
6 |
--------------------------------------------------------------------------------
/test/controllers/articles_controller_test.rb:
--------------------------------------------------------------------------------
1 | require "test_helper"
2 |
3 | class ArticlesControllerTest < ActionDispatch::IntegrationTest
4 | # test "the truth" do
5 | # assert true
6 | # end
7 | end
8 |
--------------------------------------------------------------------------------
/app/javascript/controllers/hello_controller.js:
--------------------------------------------------------------------------------
1 | import { Controller } from "@hotwired/stimulus"
2 |
3 | export default class extends Controller {
4 | connect() {
5 | this.element.textContent = "Hello World!"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/test/fixtures/trip_museums.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | one:
4 | trip: one
5 | museum: one
6 |
7 | two:
8 | trip: two
9 | museum: two
10 |
--------------------------------------------------------------------------------
/config/boot.rb:
--------------------------------------------------------------------------------
1 | ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
2 |
3 | require "bundler/setup" # Set up gems listed in the Gemfile.
4 | require "bootsnap/setup" # Speed up boot time by caching expensive operations.
5 |
--------------------------------------------------------------------------------
/test/fixtures/articles.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | one:
4 | title: MyString
5 | text: MyText
6 |
7 | two:
8 | title: MyString
9 | text: MyText
10 |
--------------------------------------------------------------------------------
/test/fixtures/users.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | one:
4 | email: MyString
5 | password: MyString
6 |
7 | two:
8 | email: MyString
9 | password: MyString
10 |
--------------------------------------------------------------------------------
/test/controllers/welcome_controller_test.rb:
--------------------------------------------------------------------------------
1 | require "test_helper"
2 |
3 | class WelcomeControllerTest < ActionDispatch::IntegrationTest
4 | test "should get index" do
5 | get welcome_index_url
6 | assert_response :success
7 | end
8 | end
9 |
--------------------------------------------------------------------------------
/Rakefile:
--------------------------------------------------------------------------------
1 | # Add your own tasks in files placed in lib/tasks ending in .rake,
2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3 |
4 | require_relative "config/application"
5 |
6 | Rails.application.load_tasks
7 |
--------------------------------------------------------------------------------
/db/migrate/20220915085356_create_articles.rb:
--------------------------------------------------------------------------------
1 | class CreateArticles < ActiveRecord::Migration[7.0]
2 | def change
3 | create_table :articles do |t|
4 | t.string :title
5 | t.text :text
6 |
7 | t.timestamps
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/db/migrate/20220916015713_create_users.rb:
--------------------------------------------------------------------------------
1 | class CreateUsers < ActiveRecord::Migration[7.0]
2 | def change
3 | create_table :users do |t|
4 | t.string :email
5 | t.string :password
6 |
7 | t.timestamps
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # See https://git-scm.com/docs/gitattributes for more about git attribute files.
2 |
3 | # Mark the database schema as having been generated.
4 | db/schema.rb linguist-generated
5 |
6 | # Mark any vendored files as having been vendored.
7 | vendor/* linguist-vendored
8 |
--------------------------------------------------------------------------------
/config/cable.yml:
--------------------------------------------------------------------------------
1 | development:
2 | adapter: redis
3 | url: redis://localhost:6379/1
4 |
5 | test:
6 | adapter: test
7 |
8 | production:
9 | adapter: redis
10 | url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
11 | channel_prefix: blog_production
12 |
--------------------------------------------------------------------------------
/app/javascript/controllers/application.js:
--------------------------------------------------------------------------------
1 | import { Application } from "@hotwired/stimulus"
2 |
3 | const application = Application.start()
4 |
5 | // Configure Stimulus development experience
6 | application.debug = false
7 | window.Stimulus = application
8 |
9 | export { application }
10 |
--------------------------------------------------------------------------------
/test/fixtures/trips.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | one:
4 | user: one
5 | name: MyString
6 | date: MyString
7 | multi_city: 1
8 |
9 | two:
10 | user: two
11 | name: MyString
12 | date: MyString
13 | multi_city: 1
14 |
--------------------------------------------------------------------------------
/app/jobs/application_job.rb:
--------------------------------------------------------------------------------
1 | class ApplicationJob < ActiveJob::Base
2 | # Automatically retry jobs that encountered a deadlock
3 | # retry_on ActiveRecord::Deadlocked
4 |
5 | # Most jobs are safe to ignore if the underlying records are no longer available
6 | # discard_on ActiveJob::DeserializationError
7 | end
8 |
--------------------------------------------------------------------------------
/app/views/layouts/mailer.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
10 |
11 | <%= yield %>
12 |
13 |
14 |
--------------------------------------------------------------------------------
/db/migrate/20220916022020_create_museums.rb:
--------------------------------------------------------------------------------
1 | class CreateMuseums < ActiveRecord::Migration[7.0]
2 | def change
3 | create_table :museums do |t|
4 | t.string :name
5 | t.string :city
6 | t.string :state
7 | t.text :description
8 |
9 | t.timestamps
10 | end
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/test/fixtures/museums.yml:
--------------------------------------------------------------------------------
1 | # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2 |
3 | one:
4 | name: MyString
5 | city: MyString
6 | state: MyString
7 | description: MyText
8 |
9 | two:
10 | name: MyString
11 | city: MyString
12 | state: MyString
13 | description: MyText
14 |
--------------------------------------------------------------------------------
/test/channels/application_cable/connection_test.rb:
--------------------------------------------------------------------------------
1 | require "test_helper"
2 |
3 | class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase
4 | # test "connects with cookies" do
5 | # cookies.signed[:user_id] = 42
6 | #
7 | # connect
8 | #
9 | # assert_equal connection.user_id, "42"
10 | # end
11 | end
12 |
--------------------------------------------------------------------------------
/db/migrate/20220916022050_create_trip_museums.rb:
--------------------------------------------------------------------------------
1 | class CreateTripMuseums < ActiveRecord::Migration[7.0]
2 | def change
3 | create_table :trip_museums do |t|
4 | t.references :trip, null: false, foreign_key: true
5 | t.references :museum, null: false, foreign_key: true
6 |
7 | t.timestamps
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/db/migrate/20220916133622_create_trips.rb:
--------------------------------------------------------------------------------
1 | class CreateTrips < ActiveRecord::Migration[7.0]
2 | def change
3 | create_table :trips do |t|
4 | t.references :user, null: false, foreign_key: true
5 | t.string :name
6 | t.string :date
7 | t.integer :multi_city
8 |
9 | t.timestamps
10 | end
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/app/controllers/users_controller.rb:
--------------------------------------------------------------------------------
1 | class UsersController < ApplicationController
2 | def new
3 | end
4 | def create
5 | @user = User.new(user_params)
6 |
7 | @user.save
8 | redirect_to '/trips'
9 | end
10 |
11 | private
12 | def user_params
13 | params.require(:user).permit(:email, :password)
14 | end
15 |
16 | end
17 |
--------------------------------------------------------------------------------
/config/importmap.rb:
--------------------------------------------------------------------------------
1 | # Pin npm packages by running ./bin/importmap
2 |
3 | pin "application", preload: true
4 | pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
5 | pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true
6 | pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
7 | pin_all_from "app/javascript/controllers", under: "controllers"
8 |
--------------------------------------------------------------------------------
/app/views/layouts/application.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Blog
5 |
6 | <%= csrf_meta_tags %>
7 | <%= csp_meta_tag %>
8 |
9 | <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
10 | <%= javascript_importmap_tags %>
11 |
12 |
13 |
14 | <%= yield %>
15 |
16 |
17 |
--------------------------------------------------------------------------------
/test/test_helper.rb:
--------------------------------------------------------------------------------
1 | ENV["RAILS_ENV"] ||= "test"
2 | require_relative "../config/environment"
3 | require "rails/test_help"
4 |
5 | class ActiveSupport::TestCase
6 | # Run tests in parallel with specified workers
7 | parallelize(workers: :number_of_processors)
8 |
9 | # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
10 | fixtures :all
11 |
12 | # Add more helper methods to be used by all tests here...
13 | end
14 |
--------------------------------------------------------------------------------
/config/initializers/filter_parameter_logging.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Configure parameters to be filtered from the log file. Use this to limit dissemination of
4 | # sensitive information. See the ActiveSupport::ParameterFilter documentation for supported
5 | # notations and behaviors.
6 | Rails.application.config.filter_parameters += [
7 | :passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn
8 | ]
9 |
--------------------------------------------------------------------------------
/config/initializers/permissions_policy.rb:
--------------------------------------------------------------------------------
1 | # Define an application-wide HTTP permissions policy. For further
2 | # information see https://developers.google.com/web/updates/2018/06/feature-policy
3 | #
4 | # Rails.application.config.permissions_policy do |f|
5 | # f.camera :none
6 | # f.gyroscope :none
7 | # f.microphone :none
8 | # f.usb :none
9 | # f.fullscreen :self
10 | # f.payment :self, "https://secure.example.com"
11 | # end
12 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | # syntax=docker/dockerfile:1
2 | FROM ruby:2.7.2
3 | RUN apt-get update -qq && apt-get install -y sqlite3
4 | WORKDIR /myapp
5 | COPY . .
6 | RUN bundle install
7 | RUN bin/rails db:migrate && bin/rails db:seed
8 |
9 | # Add a script to be executed every time the container starts.
10 | ENTRYPOINT ["/myapp/entrypoint.sh"]
11 | EXPOSE 3000
12 |
13 | # Configure the main process to run when running the image
14 | CMD ["/myapp/bin/rails", "server", "-b", "0.0.0.0"]
15 |
--------------------------------------------------------------------------------
/config/credentials.yml.enc:
--------------------------------------------------------------------------------
1 | HdSPSF8RxdptAJyZtb1E5WJen2jOEg0yVved/f+chnI8G/1BW2zM5sOq42YOTmgSZpfJwy6kRNQCvJRMNo/RCTHavOogN9u7sLAi4gN0VglGA2x/d1eNKXlXcTYR+qhCG8pp8cb2ttSn5rPJFGWyPckpDmpZ/t6sYhV4GjEhGHUmK1dFV0Pb/4wfkmwO6u9wPYAgv6JelQm8crMOGGBYhIH50MiGoQf4+y6TesgXanbORDPsytZNu74iZTK4CTx5TU+kPZbEKAlnzNELp1ESiuHGjcp5x7dr2T1KvLnWbKp7bP/1rpC9WILvy59URr/ZsXzjtxYgZyYSO+j/lsQtO0bXFvvSgiekxe0HN9zxse4hoAbvJaXpPcoFAXQXITca2JtHZ/Rc3SUECD3ygSIAQgo/do0Vt6DiUVCr--glltuo75hyrbAL/r--W8RbdDRr+KoRAZN3MdIm3Q==
--------------------------------------------------------------------------------
/config/routes.rb:
--------------------------------------------------------------------------------
1 | Rails.application.routes.draw do
2 | get 'welcome/index'
3 | resources :users
4 | # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
5 | resources :articles
6 | resources :trips do
7 | collection do
8 | get 'trip_museum_delete'
9 | get 'trip_museum_toggle'
10 | get 'trip_delete'
11 | get 'museums'
12 | end
13 | end
14 |
15 | # Defines the root path route ("/")
16 | root 'users#new'
17 | end
18 |
--------------------------------------------------------------------------------
/app/views/users/new.html.erb:
--------------------------------------------------------------------------------
1 |
2 | If you don't hava a user, you can register one, and then go to the trips list.
3 |
4 |
5 | Or you can go to the trips page directly
6 |
7 | <%= form_for :user, url: users_path do |f| %>
8 |
9 | <%= f.label 'Email' %>
10 | <%= f.text_field :email %>
11 |
12 |
13 |
14 | <%= f.label 'Password' %>
15 | <%= f.password_field :password %>
16 |
17 |
18 |
19 | <%= f.submit 'Register' %>
20 |
21 | <% end %>
--------------------------------------------------------------------------------
/config/initializers/assets.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Version of your assets, change this if you want to expire all your assets.
4 | Rails.application.config.assets.version = "1.0"
5 |
6 | # Add additional assets to the asset load path.
7 | # Rails.application.config.assets.paths << Emoji.images_path
8 |
9 | # Precompile additional assets.
10 | # application.js, application.css, and all non-JS/CSS in the app/assets
11 | # folder are already added.
12 | # Rails.application.config.assets.precompile += %w( admin.js admin.css )
13 |
--------------------------------------------------------------------------------
/app/javascript/controllers/index.js:
--------------------------------------------------------------------------------
1 | // Import and register all your controllers from the importmap under controllers/*
2 |
3 | import { application } from "controllers/application"
4 |
5 | // Eager load all controllers defined in the import map under controllers/**/*_controller
6 | import { eagerLoadControllersFrom } from "@hotwired/stimulus-loading"
7 | eagerLoadControllersFrom("controllers", application)
8 |
9 | // Lazy load controllers as they appear in the DOM (remember not to preload controllers in import map!)
10 | // import { lazyLoadControllersFrom } from "@hotwired/stimulus-loading"
11 | // lazyLoadControllersFrom("controllers", application)
12 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "name": "Rails server",
9 | "type": "Ruby",
10 | "request": "launch",
11 | "program": "${workspaceRoot}/bin/rails",
12 | "args": [
13 | "server"
14 | ]
15 | },
16 | {
17 | "name": "Rails crawl",
18 | "type": "Ruby",
19 | "request": "launch",
20 | "program": "${workspaceRoot}/bin/crawl.rb"
21 | }
22 | ]
23 | }
--------------------------------------------------------------------------------
/app/views/trips/new.html.erb:
--------------------------------------------------------------------------------
1 | <% flash.each do |type, msg| %>
2 |
3 | Error:
4 | <%= msg %>
5 |
6 | <% end %>
7 |
8 |
9 | Current User: <%= @user.email %>
10 |
11 | <%= form_for :trip, url: trips_path do |f| %>
12 |
13 | <%= f.label :name %>
14 | <%= f.text_field :name %>
15 |
16 |
17 |
18 | <%= f.label :date %>
19 | <%= f.text_field :date %>
20 |
21 |
22 | <%= f.submit %>
23 |
24 | <% @museums.each do |museum| %>
25 |
26 | <%= check_box_tag("museum["+museum.id.to_s+"]") %>
27 | <%= museum.name %>
28 |
29 | <% end %>
30 | <% end %>
--------------------------------------------------------------------------------
/config/database.yml:
--------------------------------------------------------------------------------
1 | # SQLite. Versions 3.8.0 and up are supported.
2 | # gem install sqlite3
3 | #
4 | # Ensure the SQLite 3 gem is defined in your Gemfile
5 | # gem "sqlite3"
6 | #
7 | default: &default
8 | adapter: sqlite3
9 | pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
10 | timeout: 5000
11 |
12 | development:
13 | <<: *default
14 | database: db/development.sqlite3
15 |
16 | # Warning: The database defined as "test" will be erased and
17 | # re-generated from your development database when you run "rake".
18 | # Do not set this db to the same as development or production.
19 | test:
20 | <<: *default
21 | database: db/test.sqlite3
22 |
23 | production:
24 | <<: *default
25 | database: db/production.sqlite3
26 |
--------------------------------------------------------------------------------
/config/initializers/inflections.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Add new inflection rules using the following format. Inflections
4 | # are locale specific, and you may define rules for as many different
5 | # locales as you wish. All of these examples are active by default:
6 | # ActiveSupport::Inflector.inflections(:en) do |inflect|
7 | # inflect.plural /^(ox)$/i, "\\1en"
8 | # inflect.singular /^(ox)en/i, "\\1"
9 | # inflect.irregular "person", "people"
10 | # inflect.uncountable %w( fish sheep )
11 | # end
12 |
13 | # These inflection rules are supported but not enabled by default:
14 | # ActiveSupport::Inflector.inflections(:en) do |inflect|
15 | # inflect.acronym "RESTful"
16 | # end
17 |
--------------------------------------------------------------------------------
/app/views/trips/museums.html.erb:
--------------------------------------------------------------------------------
1 | <%= link_to 'Back to Trip', trip_path(@trip) %>
2 |
3 |
4 | | Name |
5 | City |
6 | State |
7 | OP |
8 |
9 |
10 | <% @museums.each do |museum| %>
11 |
12 | | <%= museum[:name] %> |
13 | <%= museum[:city] %> |
14 | <%= museum[:state] %> |
15 |
16 | <% if museum[:selected] %>
17 | <%= link_to 'Delete', '/trips/trip_museum_toggle?op=del&mid='+museum[:id].to_s+'&tid='+@trip.id.to_s %>
18 | <% else %>
19 | <%= link_to 'Add', '/trips/trip_museum_toggle?op=add&mid='+museum[:id].to_s+'&tid='+@trip.id.to_s %>
20 | <% end %>
21 | |
22 |
23 | <% end %>
24 |
25 |
--------------------------------------------------------------------------------
/app/views/trips/index.html.erb:
--------------------------------------------------------------------------------
1 | New Trip
2 |
8 |
9 | <%= link_to 'DayTrip', '/trips' %> <%= link_to 'MutipleDayTrip', '/trips?multi=1' %>
10 |
11 |
12 | | name |
13 | date |
14 | type |
15 | |
16 |
17 |
18 | <% @trips.each do |trip| %>
19 |
20 | | <%= trip.name %> |
21 | <%= trip.date %> |
22 | <%= trip.multi_city == 1 ? 'Multiple Day Trip' : 'Day Trip' %>
23 | | <%= link_to 'Show', trip_path(trip) %> |
24 |
25 | <% end %>
26 |
--------------------------------------------------------------------------------
/config/application.rb:
--------------------------------------------------------------------------------
1 | require_relative "boot"
2 |
3 | require "rails/all"
4 |
5 | # Require the gems listed in Gemfile, including any gems
6 | # you've limited to :test, :development, or :production.
7 | Bundler.require(*Rails.groups)
8 |
9 | module Blog
10 | class Application < Rails::Application
11 | # Initialize configuration defaults for originally generated Rails version.
12 | config.load_defaults 7.0
13 |
14 | # Configuration for the application, engines, and railties goes here.
15 | #
16 | # These settings can be overridden in specific environments using the files
17 | # in config/environments, which are processed later.
18 | #
19 | # config.time_zone = "Central Time (US & Canada)"
20 | # config.eager_load_paths << Rails.root.join("extras")
21 | end
22 | end
23 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/application.css:
--------------------------------------------------------------------------------
1 | /*
2 | * This is a manifest file that'll be compiled into application.css, which will include all the files
3 | * listed below.
4 | *
5 | * Any CSS (and SCSS, if configured) file within this directory, lib/assets/stylesheets, or any plugin's
6 | * vendor/assets/stylesheets directory can be referenced here using a relative path.
7 | *
8 | * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9 | * compiled file so the styles you add here take precedence over styles defined in any other CSS
10 | * files in this directory. Styles in this file should be added after the last require_* statement.
11 | * It is generally better to create a new file per style scope.
12 | *
13 | *= require_tree .
14 | *= require_self
15 | */
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files for more about ignoring files.
2 | #
3 | # If you find yourself ignoring temporary files generated by your text editor
4 | # or operating system, you probably want to add a global ignore instead:
5 | # git config --global core.excludesfile '~/.gitignore_global'
6 |
7 | # Ignore bundler config.
8 | /.bundle
9 |
10 | # Ignore the default SQLite database.
11 | /db/*.sqlite3
12 | /db/*.sqlite3-*
13 |
14 | # Ignore all logfiles and tempfiles.
15 | /log/*
16 | /tmp/*
17 | !/log/.keep
18 | !/tmp/.keep
19 |
20 | # Ignore pidfiles, but keep the directory.
21 | /tmp/pids/*
22 | !/tmp/pids/
23 | !/tmp/pids/.keep
24 |
25 | # Ignore uploaded files in development.
26 | /storage/*
27 | !/storage/.keep
28 | /tmp/storage/*
29 | !/tmp/storage/
30 | !/tmp/storage/.keep
31 |
32 | /public/assets
33 |
34 | # Ignore master key for decrypting credentials and more.
35 | /config/master.key
36 |
--------------------------------------------------------------------------------
/app/views/trips/show.html.erb:
--------------------------------------------------------------------------------
1 |
2 | Name:
3 | <%= @trip.name %>
4 |
5 |
6 |
7 | Date:
8 | <%= @trip.date %>
9 |
10 |
11 |
12 | Type:
13 | <%= @trip.multi_city == 1 ? 'Multiple Day Trip' : 'Day Trip' %>
14 |
15 |
16 |
17 | <%= link_to 'Delete', '/trips/trip_delete?id='+@trip.id.to_s %>
18 |
19 |
20 |
21 | <%= link_to 'Add Museum', '/trips/museums?id='+@trip.id.to_s %>
22 |
23 |
24 |
25 |
26 | | Name |
27 | City |
28 | State |
29 | OP |
30 |
31 |
32 | <% @museums.each do |museum| %>
33 |
34 | | <%= museum.name %> |
35 | <%= museum.city %> |
36 | <%= museum.state %> |
37 | <%= link_to 'Delete', '/trips/trip_museum_delete?mid='+museum.id.to_s+'&tid='+@trip.id.to_s %> |
38 |
39 | <% end %>
40 |
41 |
42 |
--------------------------------------------------------------------------------
/config/locales/en.yml:
--------------------------------------------------------------------------------
1 | # Files in the config/locales directory are used for internationalization
2 | # and are automatically loaded by Rails. If you want to use locales other
3 | # than English, add the necessary files in this directory.
4 | #
5 | # To use the locales, use `I18n.t`:
6 | #
7 | # I18n.t "hello"
8 | #
9 | # In views, this is aliased to just `t`:
10 | #
11 | # <%= t("hello") %>
12 | #
13 | # To use a different locale, set it with `I18n.locale`:
14 | #
15 | # I18n.locale = :es
16 | #
17 | # This would use the information in config/locales/es.yml.
18 | #
19 | # The following keys must be escaped otherwise they will not be retrieved by
20 | # the default I18n backend:
21 | #
22 | # true, false, on, off, yes, no
23 | #
24 | # Instead, surround them with single quotes.
25 | #
26 | # en:
27 | # "true": "foo"
28 | #
29 | # To learn more, please read the Rails Internationalization guide
30 | # available at https://guides.rubyonrails.org/i18n.html.
31 |
32 | en:
33 | hello: "Hello world"
34 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # README
2 |
3 | This blog can be access by this link [https://b.dtm.pub](https://b.dtm.pub)
4 | ## Quick Start
5 |
6 | You can startup this project in two ways:
7 |
8 | ### Using docker-compose
9 |
10 | requirement: docker & docker-compose have been installed
11 | ```
12 | git clone https://github.com/yedf2/blog && cd blog
13 | docker-compose up -d
14 | ```
15 |
16 | ### From Source
17 | requirement: ruby(>=2.7) has been installed
18 | ```
19 | git clone https://github.com/yedf2/blog && cd blog
20 | bundle install
21 | bin/rails db:migrate
22 | bin/rails db:seed
23 | bin/rails server
24 | ```
25 |
26 | If you want to crawl the newest museums in `https://www.museumsusa.org/`, you can run `bin/crawl` and then run `bin/rails db:seed` to load the downloaded museus to database
27 |
28 | ## Visit
29 |
30 | After the project has been startup, you can now visit by this link [localhost:3000](localhost:3000)
31 |
32 | ## Files
33 | - [./db](./db): schema of database, initial data of database, table creating scripts
34 | - [./bin/crawl](./bin/crawl): Get museums and parse HTML
35 | - [./app](./app): UI&Controller
36 |
--------------------------------------------------------------------------------
/bin/setup:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | require "fileutils"
3 |
4 | # path to your application root.
5 | APP_ROOT = File.expand_path("..", __dir__)
6 |
7 | def system!(*args)
8 | system(*args) || abort("\n== Command #{args} failed ==")
9 | end
10 |
11 | FileUtils.chdir APP_ROOT do
12 | # This script is a way to set up or update your development environment automatically.
13 | # This script is idempotent, so that you can run it at any time and get an expectable outcome.
14 | # Add necessary setup steps to this file.
15 |
16 | puts "== Installing dependencies =="
17 | system! "gem install bundler --conservative"
18 | system("bundle check") || system!("bundle install")
19 |
20 | # puts "\n== Copying sample files =="
21 | # unless File.exist?("config/database.yml")
22 | # FileUtils.cp "config/database.yml.sample", "config/database.yml"
23 | # end
24 |
25 | puts "\n== Preparing database =="
26 | system! "bin/rails db:prepare"
27 |
28 | puts "\n== Removing old logs and tempfiles =="
29 | system! "bin/rails log:clear tmp:clear"
30 |
31 | puts "\n== Restarting application server =="
32 | system! "bin/rails restart"
33 | end
34 |
--------------------------------------------------------------------------------
/config/initializers/content_security_policy.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Define an application-wide content security policy.
4 | # See the Securing Rails Applications Guide for more information:
5 | # https://guides.rubyonrails.org/security.html#content-security-policy-header
6 |
7 | # Rails.application.configure do
8 | # config.content_security_policy do |policy|
9 | # policy.default_src :self, :https
10 | # policy.font_src :self, :https, :data
11 | # policy.img_src :self, :https, :data
12 | # policy.object_src :none
13 | # policy.script_src :self, :https
14 | # policy.style_src :self, :https
15 | # # Specify URI for violation reports
16 | # # policy.report_uri "/csp-violation-report-endpoint"
17 | # end
18 | #
19 | # # Generate session nonces for permitted importmap and inline scripts
20 | # config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s }
21 | # config.content_security_policy_nonce_directives = %w(script-src)
22 | #
23 | # # Report violations without enforcing the policy.
24 | # # config.content_security_policy_report_only = true
25 | # end
26 |
--------------------------------------------------------------------------------
/config/storage.yml:
--------------------------------------------------------------------------------
1 | test:
2 | service: Disk
3 | root: <%= Rails.root.join("tmp/storage") %>
4 |
5 | local:
6 | service: Disk
7 | root: <%= Rails.root.join("storage") %>
8 |
9 | # Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
10 | # amazon:
11 | # service: S3
12 | # access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
13 | # secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
14 | # region: us-east-1
15 | # bucket: your_own_bucket-<%= Rails.env %>
16 |
17 | # Remember not to checkin your GCS keyfile to a repository
18 | # google:
19 | # service: GCS
20 | # project: your_project
21 | # credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
22 | # bucket: your_own_bucket-<%= Rails.env %>
23 |
24 | # Use bin/rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
25 | # microsoft:
26 | # service: AzureStorage
27 | # storage_account_name: your_account_name
28 | # storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
29 | # container: your_container_name-<%= Rails.env %>
30 |
31 | # mirror:
32 | # service: Mirror
33 | # primary: local
34 | # mirrors: [ amazon, google, microsoft ]
35 |
--------------------------------------------------------------------------------
/bin/crawl:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env ruby
2 |
3 | require 'nokogiri'
4 | require 'open-uri'
5 |
6 | class Museum
7 | def initialize(name, city, state, description)
8 | @name = name.gsub(/'/, '"')
9 | @city = city
10 | @state = state
11 | @description = description.gsub(/'/, '"')
12 | end
13 | def to_s()
14 | return "{'name':'#@name','city':'#@city','state':'#@state','description':'#@description'}"
15 | end
16 | end
17 |
18 |
19 | def writeResult(data)
20 | f = File.new('db/seeds.rb', 'w+')
21 | f.puts 'Museum.create(['
22 | data.each do |row|
23 | f.puts "#{row},"
24 | end
25 | f.puts '])'
26 | f.close
27 | end
28 | # Fetch and parse HTML document
29 | first = Nokogiri::HTML(URI.open('https://www.museumsusa.org/museums/?k=1271407%2cCategoryID%3a200050%3bState%3aCA%3bDirectoryID%3a200454'))
30 |
31 | datas = Array.new()
32 | first.search('table#ctl08_ctl00_rptChildNodes_dlItems_1 a / @href').each do |link|
33 | puts 'https://www.museumsusa.org' + link
34 | page = Nokogiri::HTML(URI.open('https://www.museumsusa.org' + link))
35 | items = page.css('.itemGroup .basic')
36 | if items.size == 0
37 | puts "no item found, maybe error occured"
38 | end
39 | items.each do |museum|
40 | location = museum.css('.location')[0].content.split(',')
41 | name = museum.css('.party')[0].content.strip()
42 | abstract = museum.css('.abstract')
43 | description = ''
44 | if abstract.size() > 0
45 | description = abstract[0].content.strip()
46 | end
47 | museum = Museum.new(name, location[0].strip(), location[1].strip(), description)
48 | datas << museum
49 | end
50 | end
51 |
52 | writeResult(datas)
53 |
--------------------------------------------------------------------------------
/public/500.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | We're sorry, but something went wrong (500)
5 |
6 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
We're sorry, but something went wrong.
62 |
63 |
If you are the application owner check the logs for more information.
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/config/puma.rb:
--------------------------------------------------------------------------------
1 | # Puma can serve each request in a thread from an internal thread pool.
2 | # The `threads` method setting takes two numbers: a minimum and maximum.
3 | # Any libraries that use thread pools should be configured to match
4 | # the maximum value specified for Puma. Default is set to 5 threads for minimum
5 | # and maximum; this matches the default thread size of Active Record.
6 | #
7 | max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
8 | min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
9 | threads min_threads_count, max_threads_count
10 |
11 | # Specifies the `worker_timeout` threshold that Puma will use to wait before
12 | # terminating a worker in development environments.
13 | #
14 | worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development"
15 |
16 | # Specifies the `port` that Puma will listen on to receive requests; default is 3000.
17 | #
18 | port ENV.fetch("PORT") { 3000 }
19 |
20 | # Specifies the `environment` that Puma will run in.
21 | #
22 | environment ENV.fetch("RAILS_ENV") { "development" }
23 |
24 | # Specifies the `pidfile` that Puma will use.
25 | pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
26 |
27 | # Specifies the number of `workers` to boot in clustered mode.
28 | # Workers are forked web server processes. If using threads and workers together
29 | # the concurrency of the application would be max `threads` * `workers`.
30 | # Workers do not work on JRuby or Windows (both of which do not support
31 | # processes).
32 | #
33 | # workers ENV.fetch("WEB_CONCURRENCY") { 2 }
34 |
35 | # Use the `preload_app!` method when specifying a `workers` number.
36 | # This directive tells Puma to first boot the application and load code
37 | # before forking the application. This takes advantage of Copy On Write
38 | # process behavior so workers use less memory.
39 | #
40 | # preload_app!
41 |
42 | # Allow puma to be restarted by `bin/rails restart` command.
43 | plugin :tmp_restart
44 |
--------------------------------------------------------------------------------
/public/422.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | The change you wanted was rejected (422)
5 |
6 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
The change you wanted was rejected.
62 |
Maybe you tried to change something you didn't have access to.
63 |
64 |
If you are the application owner check the logs for more information.
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/public/404.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | The page you were looking for doesn't exist (404)
5 |
6 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
The page you were looking for doesn't exist.
62 |
You may have mistyped the address or the page may have moved.
63 |
64 |
If you are the application owner check the logs for more information.
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/db/schema.rb:
--------------------------------------------------------------------------------
1 | # This file is auto-generated from the current state of the database. Instead
2 | # of editing this file, please use the migrations feature of Active Record to
3 | # incrementally modify your database, and then regenerate this schema definition.
4 | #
5 | # This file is the source Rails uses to define your schema when running `bin/rails
6 | # db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
7 | # be faster and is potentially less error prone than running all of your
8 | # migrations from scratch. Old migrations may fail to apply correctly if those
9 | # migrations use external dependencies or application code.
10 | #
11 | # It's strongly recommended that you check this file into your version control system.
12 |
13 | ActiveRecord::Schema[7.0].define(version: 2022_09_16_133622) do
14 | create_table "articles", force: :cascade do |t|
15 | t.string "title"
16 | t.text "text"
17 | t.datetime "created_at", null: false
18 | t.datetime "updated_at", null: false
19 | end
20 |
21 | create_table "museums", force: :cascade do |t|
22 | t.string "name"
23 | t.string "city"
24 | t.string "state"
25 | t.text "description"
26 | t.datetime "created_at", null: false
27 | t.datetime "updated_at", null: false
28 | end
29 |
30 | create_table "trip_museums", force: :cascade do |t|
31 | t.integer "trip_id", null: false
32 | t.integer "museum_id", null: false
33 | t.datetime "created_at", null: false
34 | t.datetime "updated_at", null: false
35 | t.index ["museum_id"], name: "index_trip_museums_on_museum_id"
36 | t.index ["trip_id"], name: "index_trip_museums_on_trip_id"
37 | end
38 |
39 | create_table "trips", force: :cascade do |t|
40 | t.integer "user_id", null: false
41 | t.string "name"
42 | t.string "date"
43 | t.integer "multi_city"
44 | t.datetime "created_at", null: false
45 | t.datetime "updated_at", null: false
46 | t.index ["user_id"], name: "index_trips_on_user_id"
47 | end
48 |
49 | create_table "users", force: :cascade do |t|
50 | t.string "email"
51 | t.string "password"
52 | t.datetime "created_at", null: false
53 | t.datetime "updated_at", null: false
54 | end
55 |
56 | add_foreign_key "trip_museums", "museums"
57 | add_foreign_key "trip_museums", "trips"
58 | add_foreign_key "trips", "users"
59 | end
60 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 | git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3 |
4 | ruby "2.7.2"
5 |
6 | gem "nokogiri"
7 |
8 | # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
9 | gem "rails", "~> 7.0.4"
10 |
11 | # The original asset pipeline for Rails [https://github.com/rails/sprockets-rails]
12 | gem "sprockets-rails"
13 |
14 | # Use sqlite3 as the database for Active Record
15 | gem "sqlite3", "~> 1.4"
16 |
17 | # Use the Puma web server [https://github.com/puma/puma]
18 | gem "puma", "~> 5.0"
19 |
20 | # Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]
21 | gem "importmap-rails"
22 |
23 | # Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]
24 | gem "turbo-rails"
25 |
26 | # Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev]
27 | gem "stimulus-rails"
28 |
29 | # Build JSON APIs with ease [https://github.com/rails/jbuilder]
30 | gem "jbuilder"
31 |
32 | # Use Redis adapter to run Action Cable in production
33 | gem "redis", "~> 4.0"
34 |
35 | # Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis]
36 | # gem "kredis"
37 |
38 | # Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword]
39 | # gem "bcrypt", "~> 3.1.7"
40 |
41 | # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
42 | gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ]
43 |
44 | # Reduces boot times through caching; required in config/boot.rb
45 | gem "bootsnap", require: false
46 |
47 | # Use Sass to process CSS
48 | # gem "sassc-rails"
49 |
50 | # Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images]
51 | # gem "image_processing", "~> 1.2"
52 |
53 | group :development, :test do
54 | # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
55 | gem "debug", platforms: %i[ mri mingw x64_mingw ]
56 | end
57 |
58 | group :development do
59 | # Use console on exceptions pages [https://github.com/rails/web-console]
60 | gem "web-console"
61 |
62 | # Add speed badges [https://github.com/MiniProfiler/rack-mini-profiler]
63 | # gem "rack-mini-profiler"
64 |
65 | # Speed up commands on slow machines / big apps [https://github.com/rails/spring]
66 | # gem "spring"
67 | end
68 |
69 | group :test do
70 | # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing]
71 | gem "capybara"
72 | gem "selenium-webdriver"
73 | gem "webdrivers"
74 | end
75 |
--------------------------------------------------------------------------------
/config/environments/test.rb:
--------------------------------------------------------------------------------
1 | require "active_support/core_ext/integer/time"
2 |
3 | # The test environment is used exclusively to run your application's
4 | # test suite. You never need to work with it otherwise. Remember that
5 | # your test database is "scratch space" for the test suite and is wiped
6 | # and recreated between test runs. Don't rely on the data there!
7 |
8 | Rails.application.configure do
9 | # Settings specified here will take precedence over those in config/application.rb.
10 |
11 | # Turn false under Spring and add config.action_view.cache_template_loading = true.
12 | config.cache_classes = true
13 |
14 | # Eager loading loads your whole application. When running a single test locally,
15 | # this probably isn't necessary. It's a good idea to do in a continuous integration
16 | # system, or in some way before deploying your code.
17 | config.eager_load = ENV["CI"].present?
18 |
19 | # Configure public file server for tests with Cache-Control for performance.
20 | config.public_file_server.enabled = true
21 | config.public_file_server.headers = {
22 | "Cache-Control" => "public, max-age=#{1.hour.to_i}"
23 | }
24 |
25 | # Show full error reports and disable caching.
26 | config.consider_all_requests_local = true
27 | config.action_controller.perform_caching = false
28 | config.cache_store = :null_store
29 |
30 | # Raise exceptions instead of rendering exception templates.
31 | config.action_dispatch.show_exceptions = false
32 |
33 | # Disable request forgery protection in test environment.
34 | config.action_controller.allow_forgery_protection = false
35 |
36 | # Store uploaded files on the local file system in a temporary directory.
37 | config.active_storage.service = :test
38 |
39 | config.action_mailer.perform_caching = false
40 |
41 | # Tell Action Mailer not to deliver emails to the real world.
42 | # The :test delivery method accumulates sent emails in the
43 | # ActionMailer::Base.deliveries array.
44 | config.action_mailer.delivery_method = :test
45 |
46 | # Print deprecation notices to the stderr.
47 | config.active_support.deprecation = :stderr
48 |
49 | # Raise exceptions for disallowed deprecations.
50 | config.active_support.disallowed_deprecation = :raise
51 |
52 | # Tell Active Support which deprecation messages to disallow.
53 | config.active_support.disallowed_deprecation_warnings = []
54 |
55 | # Raises error for missing translations.
56 | # config.i18n.raise_on_missing_translations = true
57 |
58 | # Annotate rendered view with file names.
59 | # config.action_view.annotate_rendered_view_with_filenames = true
60 | end
61 |
--------------------------------------------------------------------------------
/config/environments/development.rb:
--------------------------------------------------------------------------------
1 | require "active_support/core_ext/integer/time"
2 |
3 | Rails.application.configure do
4 | # Settings specified here will take precedence over those in config/application.rb.
5 |
6 | # In the development environment your application's code is reloaded any time
7 | # it changes. This slows down response time but is perfect for development
8 | # since you don't have to restart the web server when you make code changes.
9 | config.cache_classes = false
10 |
11 | # Do not eager load code on boot.
12 | config.eager_load = false
13 |
14 | # Show full error reports.
15 | config.consider_all_requests_local = true
16 |
17 | # Enable server timing
18 | config.server_timing = true
19 |
20 | # Enable/disable caching. By default caching is disabled.
21 | # Run rails dev:cache to toggle caching.
22 | if Rails.root.join("tmp/caching-dev.txt").exist?
23 | config.action_controller.perform_caching = true
24 | config.action_controller.enable_fragment_cache_logging = true
25 |
26 | config.cache_store = :memory_store
27 | config.public_file_server.headers = {
28 | "Cache-Control" => "public, max-age=#{2.days.to_i}"
29 | }
30 | else
31 | config.action_controller.perform_caching = false
32 |
33 | config.cache_store = :null_store
34 | end
35 |
36 | # Store uploaded files on the local file system (see config/storage.yml for options).
37 | config.active_storage.service = :local
38 |
39 | # Don't care if the mailer can't send.
40 | config.action_mailer.raise_delivery_errors = false
41 |
42 | config.action_mailer.perform_caching = false
43 |
44 | # Print deprecation notices to the Rails logger.
45 | config.active_support.deprecation = :log
46 |
47 | # Raise exceptions for disallowed deprecations.
48 | config.active_support.disallowed_deprecation = :raise
49 |
50 | # Tell Active Support which deprecation messages to disallow.
51 | config.active_support.disallowed_deprecation_warnings = []
52 |
53 | # Raise an error on page load if there are pending migrations.
54 | config.active_record.migration_error = :page_load
55 |
56 | # Highlight code that triggered database queries in logs.
57 | config.active_record.verbose_query_logs = true
58 |
59 | # Suppress logger output for asset requests.
60 | config.assets.quiet = true
61 |
62 | # Raises error for missing translations.
63 | # config.i18n.raise_on_missing_translations = true
64 |
65 | # Annotate rendered view with file names.
66 | # config.action_view.annotate_rendered_view_with_filenames = true
67 |
68 | # Uncomment if you wish to allow Action Cable access from any origin.
69 | # config.action_cable.disable_request_forgery_protection = true
70 | end
71 |
--------------------------------------------------------------------------------
/bin/bundle:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # frozen_string_literal: true
3 |
4 | #
5 | # This file was generated by Bundler.
6 | #
7 | # The application 'bundle' is installed as part of a gem, and
8 | # this file is here to facilitate running it.
9 | #
10 |
11 | require "rubygems"
12 |
13 | m = Module.new do
14 | module_function
15 |
16 | def invoked_as_script?
17 | File.expand_path($0) == File.expand_path(__FILE__)
18 | end
19 |
20 | def env_var_version
21 | ENV["BUNDLER_VERSION"]
22 | end
23 |
24 | def cli_arg_version
25 | return unless invoked_as_script? # don't want to hijack other binstubs
26 | return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
27 | bundler_version = nil
28 | update_index = nil
29 | ARGV.each_with_index do |a, i|
30 | if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
31 | bundler_version = a
32 | end
33 | next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
34 | bundler_version = $1
35 | update_index = i
36 | end
37 | bundler_version
38 | end
39 |
40 | def gemfile
41 | gemfile = ENV["BUNDLE_GEMFILE"]
42 | return gemfile if gemfile && !gemfile.empty?
43 |
44 | File.expand_path("../../Gemfile", __FILE__)
45 | end
46 |
47 | def lockfile
48 | lockfile =
49 | case File.basename(gemfile)
50 | when "gems.rb" then gemfile.sub(/\.rb$/, gemfile)
51 | else "#{gemfile}.lock"
52 | end
53 | File.expand_path(lockfile)
54 | end
55 |
56 | def lockfile_version
57 | return unless File.file?(lockfile)
58 | lockfile_contents = File.read(lockfile)
59 | return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
60 | Regexp.last_match(1)
61 | end
62 |
63 | def bundler_version
64 | @bundler_version ||=
65 | env_var_version || cli_arg_version ||
66 | lockfile_version
67 | end
68 |
69 | def bundler_requirement
70 | return "#{Gem::Requirement.default}.a" unless bundler_version
71 |
72 | bundler_gem_version = Gem::Version.new(bundler_version)
73 |
74 | requirement = bundler_gem_version.approximate_recommendation
75 |
76 | return requirement unless Gem::Version.new(Gem::VERSION) < Gem::Version.new("2.7.0")
77 |
78 | requirement += ".a" if bundler_gem_version.prerelease?
79 |
80 | requirement
81 | end
82 |
83 | def load_bundler!
84 | ENV["BUNDLE_GEMFILE"] ||= gemfile
85 |
86 | activate_bundler
87 | end
88 |
89 | def activate_bundler
90 | gem_error = activation_error_handling do
91 | gem "bundler", bundler_requirement
92 | end
93 | return if gem_error.nil?
94 | require_error = activation_error_handling do
95 | require "bundler/version"
96 | end
97 | return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION))
98 | warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`"
99 | exit 42
100 | end
101 |
102 | def activation_error_handling
103 | yield
104 | nil
105 | rescue StandardError, LoadError => e
106 | e
107 | end
108 | end
109 |
110 | m.load_bundler!
111 |
112 | if m.invoked_as_script?
113 | load Gem.bin_path("bundler", "bundle")
114 | end
115 |
--------------------------------------------------------------------------------
/app/controllers/trips_controller.rb:
--------------------------------------------------------------------------------
1 | class TripsController < ApplicationController
2 | before_action :authenticate
3 |
4 | def index
5 | @trips = Trip.where({
6 | 'user_id': @user.id,
7 | 'multi_city': params['multi'] == "1" ? 1 : 0,
8 | })
9 | end
10 | def new
11 | @museums = Museum.all()
12 | end
13 | def create
14 | params.permit!
15 | pt = params['trip']
16 | if !pt || !pt['name'] || pt['name']=='' || !pt['date'] || pt['date']==''
17 | return report_error('you should specify the name and the date of the trip')
18 | end
19 | pm = params['museum']
20 | if !pm || pm.keys.size == 0
21 | return report_error("a trip should have at least one museum")
22 | end
23 | @trip = Trip.new(pt)
24 | @trip.user_id = @user.id
25 | n = Time.now.strftime("%Y-%m-%d")
26 | regex = /\d{4}-\d{2}-\d{2}/
27 | if @trip.date !~ regex || @trip.date <= n
28 | return report_error('bad date, should be a future date formated like "2001-05-15"')
29 | end
30 |
31 | ks = pm.keys
32 | cities = Museum.where(id: ks).select('city').uniq
33 | @trip.multi_city = cities.size >= 2 ? 1 : 0
34 |
35 | @trip.save
36 | ks.each do |m|
37 | tm = TripMuseum.new({'trip_id':@trip.id, 'museum_id': m})
38 | tm.save
39 | end
40 | redirect_to '/trips'
41 | end
42 | def show
43 | @trip = Trip.find(params[:id])
44 | ms = TripMuseum.where({'trip_id': params['id']}).select('museum_id')
45 | @museums = Museum.where({'id': ms})
46 | end
47 |
48 | def museums
49 | mids = Hash.new
50 | TripMuseum.where({'trip_id': params['id']}).each do |k|
51 | mids[k.museum_id] = 1
52 | end
53 | @trip = Trip.find(params[:id])
54 | @museums = Array.new
55 | Museum.all.each do |museum|
56 | @museums << {
57 | "name": museum.name,
58 | "city": museum.city,
59 | "state": museum.state,
60 | "description": museum.description,
61 | "id": museum.id,
62 | "selected": mids[museum.id]==1,
63 | }
64 | end
65 | end
66 | def trip_museum_delete
67 | TripMuseum.where({'trip_id': params['tid'], 'museum_id': params['mid']}).destroy_all
68 | redirect_to '/trips/'+params['tid']
69 | end
70 | def trip_museum_toggle
71 | if params['op'] == 'del'
72 | TripMuseum.where({'trip_id': params['tid'], 'museum_id': params['mid']}).destroy_all
73 | update_multi(params['tid'])
74 | else
75 | TripMuseum.new({'trip_id': params['tid'], 'museum_id': params['mid']}).save
76 | update_multi(params['tid'])
77 | end
78 | redirect_to '/trips/museums?id='+params['tid']
79 | end
80 | def trip_delete
81 | TripMuseum.where({'trip_id': params['id']}).destroy_all
82 | Trip.find_by_id(params['id']).destroy
83 | redirect_to trips_path
84 | end
85 |
86 | private
87 | def report_error(msg)
88 | redirect_to '/trips/new', alert: msg
89 | end
90 | def update_multi(tid)
91 | ids = TripMuseum.where({'trip_id': tid}).select('museum_id')
92 | cities = Museum.where(id: ids).select('city').uniq
93 | trip = Trip.find_by_id(tid)
94 | trip.multi_city = cities.size >= 2 ? 1 : 0
95 | trip.save
96 | end
97 | def authenticate
98 | authenticate_or_request_with_http_basic do |username, password|
99 | user = User.find_by_email(username)
100 | if user && user.password == password
101 | @user = user
102 | end
103 | end
104 | end
105 | end
106 |
--------------------------------------------------------------------------------
/config/environments/production.rb:
--------------------------------------------------------------------------------
1 | require "active_support/core_ext/integer/time"
2 |
3 | Rails.application.configure do
4 | # Settings specified here will take precedence over those in config/application.rb.
5 |
6 | # Code is not reloaded between requests.
7 | config.cache_classes = true
8 |
9 | # Eager load code on boot. This eager loads most of Rails and
10 | # your application in memory, allowing both threaded web servers
11 | # and those relying on copy on write to perform better.
12 | # Rake tasks automatically ignore this option for performance.
13 | config.eager_load = true
14 |
15 | # Full error reports are disabled and caching is turned on.
16 | config.consider_all_requests_local = false
17 | config.action_controller.perform_caching = true
18 |
19 | # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
20 | # or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
21 | # config.require_master_key = true
22 |
23 | # Disable serving static files from the `/public` folder by default since
24 | # Apache or NGINX already handles this.
25 | config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present?
26 |
27 | # Compress CSS using a preprocessor.
28 | # config.assets.css_compressor = :sass
29 |
30 | # Do not fallback to assets pipeline if a precompiled asset is missed.
31 | config.assets.compile = false
32 |
33 | # Enable serving of images, stylesheets, and JavaScripts from an asset server.
34 | # config.asset_host = "http://assets.example.com"
35 |
36 | # Specifies the header that your server uses for sending files.
37 | # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache
38 | # config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX
39 |
40 | # Store uploaded files on the local file system (see config/storage.yml for options).
41 | config.active_storage.service = :local
42 |
43 | # Mount Action Cable outside main process or domain.
44 | # config.action_cable.mount_path = nil
45 | # config.action_cable.url = "wss://example.com/cable"
46 | # config.action_cable.allowed_request_origins = [ "http://example.com", /http:\/\/example.*/ ]
47 |
48 | # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
49 | # config.force_ssl = true
50 |
51 | # Include generic and useful information about system operation, but avoid logging too much
52 | # information to avoid inadvertent exposure of personally identifiable information (PII).
53 | config.log_level = :info
54 |
55 | # Prepend all log lines with the following tags.
56 | config.log_tags = [ :request_id ]
57 |
58 | # Use a different cache store in production.
59 | # config.cache_store = :mem_cache_store
60 |
61 | # Use a real queuing backend for Active Job (and separate queues per environment).
62 | # config.active_job.queue_adapter = :resque
63 | # config.active_job.queue_name_prefix = "blog_production"
64 |
65 | config.action_mailer.perform_caching = false
66 |
67 | # Ignore bad email addresses and do not raise email delivery errors.
68 | # Set this to true and configure the email server for immediate delivery to raise delivery errors.
69 | # config.action_mailer.raise_delivery_errors = false
70 |
71 | # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
72 | # the I18n.default_locale when a translation cannot be found).
73 | config.i18n.fallbacks = true
74 |
75 | # Don't log any deprecations.
76 | config.active_support.report_deprecations = false
77 |
78 | # Use default logging formatter so that PID and timestamp are not suppressed.
79 | config.log_formatter = ::Logger::Formatter.new
80 |
81 | # Use a different logger for distributed setups.
82 | # require "syslog/logger"
83 | # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new "app-name")
84 |
85 | if ENV["RAILS_LOG_TO_STDOUT"].present?
86 | logger = ActiveSupport::Logger.new(STDOUT)
87 | logger.formatter = config.log_formatter
88 | config.logger = ActiveSupport::TaggedLogging.new(logger)
89 | end
90 |
91 | # Do not dump schema after migrations.
92 | config.active_record.dump_schema_after_migration = false
93 | end
94 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | actioncable (7.0.4)
5 | actionpack (= 7.0.4)
6 | activesupport (= 7.0.4)
7 | nio4r (~> 2.0)
8 | websocket-driver (>= 0.6.1)
9 | actionmailbox (7.0.4)
10 | actionpack (= 7.0.4)
11 | activejob (= 7.0.4)
12 | activerecord (= 7.0.4)
13 | activestorage (= 7.0.4)
14 | activesupport (= 7.0.4)
15 | mail (>= 2.7.1)
16 | net-imap
17 | net-pop
18 | net-smtp
19 | actionmailer (7.0.4)
20 | actionpack (= 7.0.4)
21 | actionview (= 7.0.4)
22 | activejob (= 7.0.4)
23 | activesupport (= 7.0.4)
24 | mail (~> 2.5, >= 2.5.4)
25 | net-imap
26 | net-pop
27 | net-smtp
28 | rails-dom-testing (~> 2.0)
29 | actionpack (7.0.4)
30 | actionview (= 7.0.4)
31 | activesupport (= 7.0.4)
32 | rack (~> 2.0, >= 2.2.0)
33 | rack-test (>= 0.6.3)
34 | rails-dom-testing (~> 2.0)
35 | rails-html-sanitizer (~> 1.0, >= 1.2.0)
36 | actiontext (7.0.4)
37 | actionpack (= 7.0.4)
38 | activerecord (= 7.0.4)
39 | activestorage (= 7.0.4)
40 | activesupport (= 7.0.4)
41 | globalid (>= 0.6.0)
42 | nokogiri (>= 1.8.5)
43 | actionview (7.0.4)
44 | activesupport (= 7.0.4)
45 | builder (~> 3.1)
46 | erubi (~> 1.4)
47 | rails-dom-testing (~> 2.0)
48 | rails-html-sanitizer (~> 1.1, >= 1.2.0)
49 | activejob (7.0.4)
50 | activesupport (= 7.0.4)
51 | globalid (>= 0.3.6)
52 | activemodel (7.0.4)
53 | activesupport (= 7.0.4)
54 | activerecord (7.0.4)
55 | activemodel (= 7.0.4)
56 | activesupport (= 7.0.4)
57 | activestorage (7.0.4)
58 | actionpack (= 7.0.4)
59 | activejob (= 7.0.4)
60 | activerecord (= 7.0.4)
61 | activesupport (= 7.0.4)
62 | marcel (~> 1.0)
63 | mini_mime (>= 1.1.0)
64 | activesupport (7.0.4)
65 | concurrent-ruby (~> 1.0, >= 1.0.2)
66 | i18n (>= 1.6, < 2)
67 | minitest (>= 5.1)
68 | tzinfo (~> 2.0)
69 | addressable (2.8.1)
70 | public_suffix (>= 2.0.2, < 6.0)
71 | bindex (0.8.1)
72 | bootsnap (1.13.0)
73 | msgpack (~> 1.2)
74 | builder (3.2.4)
75 | capybara (3.37.1)
76 | addressable
77 | matrix
78 | mini_mime (>= 0.1.3)
79 | nokogiri (~> 1.8)
80 | rack (>= 1.6.0)
81 | rack-test (>= 0.6.3)
82 | regexp_parser (>= 1.5, < 3.0)
83 | xpath (~> 3.2)
84 | childprocess (4.1.0)
85 | concurrent-ruby (1.1.10)
86 | crass (1.0.6)
87 | debug (1.6.2)
88 | irb (>= 1.3.6)
89 | reline (>= 0.3.1)
90 | digest (3.1.0)
91 | erubi (1.11.0)
92 | globalid (1.0.0)
93 | activesupport (>= 5.0)
94 | i18n (1.12.0)
95 | concurrent-ruby (~> 1.0)
96 | importmap-rails (1.1.5)
97 | actionpack (>= 6.0.0)
98 | railties (>= 6.0.0)
99 | io-console (0.5.11)
100 | irb (1.4.1)
101 | reline (>= 0.3.0)
102 | jbuilder (2.11.5)
103 | actionview (>= 5.0.0)
104 | activesupport (>= 5.0.0)
105 | loofah (2.19.0)
106 | crass (~> 1.0.2)
107 | nokogiri (>= 1.5.9)
108 | mail (2.7.1)
109 | mini_mime (>= 0.1.1)
110 | marcel (1.0.2)
111 | matrix (0.4.2)
112 | method_source (1.0.0)
113 | mini_mime (1.1.2)
114 | mini_portile2 (2.8.0)
115 | minitest (5.16.3)
116 | msgpack (1.5.6)
117 | net-imap (0.2.3)
118 | digest
119 | net-protocol
120 | strscan
121 | net-pop (0.1.1)
122 | digest
123 | net-protocol
124 | timeout
125 | net-protocol (0.1.3)
126 | timeout
127 | net-smtp (0.3.1)
128 | digest
129 | net-protocol
130 | timeout
131 | nio4r (2.5.8)
132 | nokogiri (1.13.8)
133 | mini_portile2 (~> 2.8.0)
134 | racc (~> 1.4)
135 | public_suffix (5.0.0)
136 | puma (5.6.5)
137 | nio4r (~> 2.0)
138 | racc (1.6.0)
139 | rack (2.2.4)
140 | rack-test (2.0.2)
141 | rack (>= 1.3)
142 | rails (7.0.4)
143 | actioncable (= 7.0.4)
144 | actionmailbox (= 7.0.4)
145 | actionmailer (= 7.0.4)
146 | actionpack (= 7.0.4)
147 | actiontext (= 7.0.4)
148 | actionview (= 7.0.4)
149 | activejob (= 7.0.4)
150 | activemodel (= 7.0.4)
151 | activerecord (= 7.0.4)
152 | activestorage (= 7.0.4)
153 | activesupport (= 7.0.4)
154 | bundler (>= 1.15.0)
155 | railties (= 7.0.4)
156 | rails-dom-testing (2.0.3)
157 | activesupport (>= 4.2.0)
158 | nokogiri (>= 1.6)
159 | rails-html-sanitizer (1.4.3)
160 | loofah (~> 2.3)
161 | railties (7.0.4)
162 | actionpack (= 7.0.4)
163 | activesupport (= 7.0.4)
164 | method_source
165 | rake (>= 12.2)
166 | thor (~> 1.0)
167 | zeitwerk (~> 2.5)
168 | rake (13.0.6)
169 | redis (4.8.0)
170 | regexp_parser (2.5.0)
171 | reline (0.3.1)
172 | io-console (~> 0.5)
173 | rexml (3.2.5)
174 | rubyzip (2.3.2)
175 | selenium-webdriver (4.4.0)
176 | childprocess (>= 0.5, < 5.0)
177 | rexml (~> 3.2, >= 3.2.5)
178 | rubyzip (>= 1.2.2, < 3.0)
179 | websocket (~> 1.0)
180 | sprockets (4.1.1)
181 | concurrent-ruby (~> 1.0)
182 | rack (> 1, < 3)
183 | sprockets-rails (3.4.2)
184 | actionpack (>= 5.2)
185 | activesupport (>= 5.2)
186 | sprockets (>= 3.0.0)
187 | sqlite3 (1.5.0)
188 | mini_portile2 (~> 2.8.0)
189 | stimulus-rails (1.1.0)
190 | railties (>= 6.0.0)
191 | strscan (3.0.4)
192 | thor (1.2.1)
193 | timeout (0.3.0)
194 | turbo-rails (1.1.1)
195 | actionpack (>= 6.0.0)
196 | activejob (>= 6.0.0)
197 | railties (>= 6.0.0)
198 | tzinfo (2.0.5)
199 | concurrent-ruby (~> 1.0)
200 | web-console (4.2.0)
201 | actionview (>= 6.0.0)
202 | activemodel (>= 6.0.0)
203 | bindex (>= 0.4.0)
204 | railties (>= 6.0.0)
205 | webdrivers (5.0.0)
206 | nokogiri (~> 1.6)
207 | rubyzip (>= 1.3.0)
208 | selenium-webdriver (~> 4.0)
209 | websocket (1.2.9)
210 | websocket-driver (0.7.5)
211 | websocket-extensions (>= 0.1.0)
212 | websocket-extensions (0.1.5)
213 | xpath (3.2.0)
214 | nokogiri (~> 1.8)
215 | zeitwerk (2.6.0)
216 |
217 | PLATFORMS
218 | ruby
219 |
220 | DEPENDENCIES
221 | bootsnap
222 | capybara
223 | debug
224 | importmap-rails
225 | jbuilder
226 | nokogiri
227 | puma (~> 5.0)
228 | rails (~> 7.0.4)
229 | redis (~> 4.0)
230 | selenium-webdriver
231 | sprockets-rails
232 | sqlite3 (~> 1.4)
233 | stimulus-rails
234 | turbo-rails
235 | tzinfo-data
236 | web-console
237 | webdrivers
238 |
239 | RUBY VERSION
240 | ruby 2.7.2p137
241 |
242 | BUNDLED WITH
243 | 2.1.4
244 |
--------------------------------------------------------------------------------
/db/seeds.rb:
--------------------------------------------------------------------------------
1 |
2 | Museum.create([
3 | {'name':'Frank Bette Center for the Arts','city':'Alameda','state':'California','description':'The Frank Bette Center for the Arts is a creative hub for the community, providing artistic growth and appreciation through a variety of activities and programs. Fulfilling Frank Bette"s dream of creating "a place where creative people could have meetings, readings, showings and other doings." To enhance that dream by being an advocate and resource for all to create, enjoy and appreciate the arts. FBCA is the leading catalyst for community development through art.'},
4 | {'name':'C.N. Gorman Museum','city':'Davis','state':'California','description':'The C.N. Gorman Museum is a portal for Indigenous and non-Indigenous visionaries. It is a space where perceptions of contemporary Native American, Indigenous, and First Nations art are intellectually recalibrated. Exhibiting artists challenge critical issues of borders, stereotypes, and identity by speaking eloquently through their artistic medium of choice.'},
5 | {'name':'Design Gallery/Design Alliance','city':'Davis','state':'California','description':'Design Gallery/Design Alliance in Davis, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
6 | {'name':'Memorial Union Art Gallery','city':'Davis','state':'California','description':'Memorial Union Art Gallery in Davis, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
7 | {'name':'Richard L. Nelson Gallery, U.C. Davis','city':'Davis','state':'California','description':'Richard L. Nelson Gallery, U.C. Davis in Davis, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
8 | {'name':'City of Lancaster Museum/Art Gallery','city':'Lancaster','state':'California','description':'This facility presents a variety of exhibitions which are planned by staff. It showcases seven to nine rotating shows annually; an exhibit can range from 4 to 12 weeks in duration. The Museum/Art Gallery features local, national, and international art and historical exhibitions from our collections, private lenders, and other museums. Our shows are accompanied with free public receptions and lectures.'},
9 | {'name':'Palo Alto Art Center','city':'Palo Alto','state':'California','description':'Palo Alto Art Center in Palo Alto, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
10 | {'name':'Bowers Museum','city':'Santa Ana','state':'California','description':'The Bowers Museum of Cultural Art is one of California"s largest and finest museums. Its permanent collection includes more than 130,000 objects from such diverse areas as African, South Pacific, Asian, Native American, Pre-Columbian, and Californian. In addition to its permanent collection, the Museum also presents several special exhibitions each year as well as a variety of events and programs, including films, lectures, concerts, guided tours, talks, and family programs.'},
11 | {'name':'Santa Ana College Art Gallery','city':'Santa Ana','state':'California','description':'Santa Ana College Art Gallery in Santa Ana, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
12 | {'name':'Soka University Art Gallery','city':'Aliso Viejo','state':'California','description':'Welcome to Soka University"s beautiful two-story, 8,000 square foot Founder"s Hall Art Gallery. Please see our calendar on our university website for upcoming shows and exhibitions.'},
13 | {'name':'Downey Museum Of Art','city':'Downey','state':'California','description':'IMPORTANT CHANGE: The Downey Museum of Art is no longer located at 10419 Rives Avenue Downey Ca 90241.'},
14 | {'name':'Lincoln Arts & Cultural Foundation.','city':'Lincoln','state':'California','description':'Lincoln Arts & Cultural Foundation. in Lincoln, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
15 | {'name':'Paradise Art Center','city':'Paradise','state':'California','description':'Paradise Art Center in Paradise, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
16 | {'name':'Carriage & Western Art Museum Of Santa Barbara','city':'Santa Barbara','state':'California','description':'Museum seeks to preserve and restore transportation methods of yesteryear. The collection includes over 80 carriages and wagons. Western saddles, tack and Western art are also displayed.'},
17 | {'name':'Padre"s Quarters','city':'Santa Barbara','state':'California','description':'Padre"s Quarters in Santa Barbara, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
18 | {'name':'Santa Barbara Museum Of Art','city':'Santa Barbara','state':'California','description':'Santa Barbara Museum Of Art in Santa Barbara, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
19 | {'name':'Susan Quinlan Doll & Teddy Bear Museum & Library','city':'Santa Barbara','state':'California','description':'3,000 of the collection"s historical and contemporary dolls and teddy bears are on display at the current time. Many of the items are limited editions or one-of-a-kind creations by some of the world"s leading doll and teddy bear artists. Visitors love the way the items are displayed in large glass-fronted cases, as well as the beautiful murals in the tea area where customers can enjoy a complimentary cup of tea or coffee.'},
20 | {'name':'University Art Museum, UCSB','city':'Santa Barbara','state':'California','description':'University Art Museum, UCSB in Santa Barbara, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
21 | {'name':'Modoc County Historical Museum','city':'Alturas','state':'California','description':'Located in Alturas, it contains several exhibits pertaining to the culture and history of Modoc County in California. Exhibits range from prehistoric cultures to modern residents of the surrounding region. Natural history including mammoth bone, and a taxidermist collection of several local species. A gun collection of over 200 firearms all used and collected by local people.'},
22 | {'name':'Brown Trout Gallery','city':'Dunsmuir','state':'California','description':'Brown Trout Gallery in Dunsmuir, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
23 | {'name':'American Museum of Straw Art','city':'Long Beach','state':'California','description':'The American Museum of Straw Art shall exist to foster an understanding of the straw arts in all of its complexities, through various exhibitions of its cultural significance, folklore, history, technique, and shall, therefore, act as an agent of research, preservation and education to insure the survival and continuation of this artistic medium. The museum shall further acquire international examples of straw art that are in keeping with these values.'},
24 | {'name':'Long Beach Museum Of Art','city':'Long Beach','state':'California','description':'Long Beach Museum Of Art in Long Beach, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
25 | {'name':'Long Beach Museum of Art Video Annex','city':'Long Beach','state':'California','description':'Long Beach Museum of Art Video Annex in Long Beach, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
26 | {'name':'Museum of Latin American Art','city':'Long Beach','state':'California','description':'MoLAA"s mission is to educate the public about contemporary Latin American fine art (by artists who have lived and worked in Latin America since WWII) through the presentation of a significant permanent collection, dynamic exhibitions and related cultural and educational programs.'},
27 | {'name':'University Art Museum, CSULB','city':'Long Beach','state':'California','description':'University Art Museum, CSULB in Long Beach, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
28 | {'name':'Art Center College of Design Galleries','city':'Pasadena','state':'California','description':'Art Center College of Design Galleries in Pasadena, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
29 | {'name':'Finnish Folk Art Museum','city':'Pasadena','state':'California','description':'Finnish Folk Art Museum in Pasadena, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
30 | {'name':'Norton Simon Museum','city':'Pasadena','state':'California','description':'Norton Simon Museum features works from the 14th century up to contemporary works of art from 20th century artists.'},
31 | {'name':'Pacific Asia Museum','city':'Pasadena','state':'California','description':'Established in 1971, Pacific Asia Museum is one of only four museums in the United States exclusively dedicated to the arts of Asia and the Pacific Islands. The museum houses 5,000 years of artistic expression from across Asia and the Pacific in a California historic landmark building. Visitors will enjoy a mix of contemporary and historic exhibitions and a wide variety of enriching public programs all year round.'},
32 | {'name':'Pasadena Museum of Art','city':'Pasadena','state':'California','description':'Pasadena Museum of Art in Pasadena, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
33 | {'name':'Mission Santa Clara','city':'Santa Clara','state':'California','description':'We welcome visitors to our historic and beautiful campus. Our campus slideshow can give you a great preview of many campus sites, including the Mission Santa Clara, the Mission Gardens, the Center for Performing Arts, and the de Saisset Museum.'},
34 | {'name':'Triton Museum Of Art','city':'Santa Clara','state':'California','description':'The Museum collects and exhibits contemporary and historical works with an emphasis on artist of the Greater Bay Area. The permanent collection includes 19th and 20th century American and Southwest Native American art.'},
35 | {'name':'Anaheim Muzeo & Heritage Center','city':'Anaheim','state':'California','description':'"The Anaheim Muzeo shows what can be done to restore an abused old building to its former glory. Built and dedicated in 1908, the Muzeo structure is the only surviving Carnegie library in Orange County, and itâs on the National Register of Historic Places. The Muzeo opened in October, 2007, and includes the former Anaheim History Room as the Anaheim Heritage Center and Disney Resort Reading Room.'},
36 | {'name':'Grossmont College Hyde Gallery','city':'El Cajon','state':'California','description':'Grossmont College Hyde Gallery in El Cajon, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
37 | {'name':'Helix Community Science Center','city':'Los Altos','state':'California','description':'Nestled amid Los Altos" boutiques, salons and eateries, Helix"s sleek, two-story storefront includes 5,000 square feet of exhibit rooms, gift shop and teaching/meeting space. Many of the 25 exhibits traveled down from the Exploratorium mothership and include popular standbys like an electromagnetic-powered ring toss, a windblown "dunescape" and various brain-fooling optical illusions.'},
38 | {'name':'Museum Of Ancient & Modern Art','city':'Penn Valley','state':'California','description':'Museum Of Ancient & Modern Art in Penn Valley, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
39 | {'name':'Art Museum of Santa Cruz County','city':'Santa Cruz','state':'California','description':'Art Museum of Santa Cruz County in Santa Cruz, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
40 | {'name':'Eloise Pickard Smith Gallery - Cowell College','city':'Santa Cruz','state':'California','description':'Eloise Pickard Smith Gallery - Cowell College in Santa Cruz, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
41 | {'name':'Mary Porter Sesnon Gallery','city':'Santa Cruz','state':'California','description':'Mary Porter Sesnon Gallery in Santa Cruz, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
42 | {'name':'Museum of Art & History, McPherson Center','city':'Santa Cruz','state':'California','description':'The Museum of Art & History @ the McPherson Center is a non-profit educational institution that promotes a greater understanding of contemporary art and the history of Santa Cruz County through its exhibitions, collections, and programs for the benefit of residents and visitors to Santa Cruz County.'},
43 | {'name':'Antioch Lynn House Gallery','city':'Antioch','state':'California','description':'Antioch Lynn House Gallery in Antioch, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
44 | {'name':'California Center for the Arts, Escondido','city':'Escondido','state':'California','description':'The Museum at the California Center for the Arts, Escondido is an inviting 9,000-square-foot exhibition space that boasts three galleries, a sculpture court, and a museum store.'},
45 | {'name':'San Diego Childrenâs Discovery Museum','city':'Escondido','state':'California','description':'The mission of the San Diego Children"s Discovery Museum is to inspire children to learn about our world through exploration, imagination, and experimentation.'},
46 | {'name':'The Autry Museum of the American West','city':'Los Angeles','state':'California','description':'In addition to ongoing and special exhibitions, the Autry continues to provide a wide range of programs, special activities, and events designed for a variety of interests and all ages.'},
47 | {'name':'Barnsdall Jr. Arts Center','city':'Los Angeles','state':'California','description':'Barnsdall Jr. Arts Center in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
48 | {'name':'Corita Art Center, Immaculate Heart Community','city':'Los Angeles','state':'California','description':'The Corita Art Center is a gallery and archive dedicated to preserving and promoting the art of Corita Kent, the spirited artist, activist, teacher and former nun. We exhibit Corita"s bold serigraphs here and facilitate exhibitions elsewhere, also offer educational programs, research opportunities and hundreds of Corita"s original signed serigraphs and watercolors for sale.'},
49 | {'name':'Craft & Folk Art Museum','city':'Los Angeles','state':'California','description':'To cross the threshold of the Craft & Folk Art Museum is to enter a realm of life-affirming, culturally-nourishing, mind-expanding possibilities. It is a collaborative work in process, functioning as catalyst, bridge, and magic mirror. It draws together the passions, discoveries and dreams of collectors, curators and designers. It combines traditional and folk art with the creations of contemporary craft artists.'},
50 | {'name':'Cultural Arts Institute Of Inglewood','city':'Los Angeles','state':'California','description':'Cultural Arts Institute Of Inglewood in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
51 | {'name':'Elizabeth Holmes Fisher Gallery-U.S.C.','city':'Los Angeles','state':'California','description':'Elizabeth Holmes Fisher Gallery-U.S.C. in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
52 | {'name':'Fowler Museum at UCLA','city':'Los Angeles','state':'California','description':''},
53 | {'name':'Frederick S. Wright Art Gallery','city':'Los Angeles','state':'California','description':'Frederick S. Wright Art Gallery in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
54 | {'name':'Grunwald Center for the Graphic Arts at UCLA','city':'Los Angeles','state':'California','description':'The center focuses on graphic arts. The collection includes over 5000 prints and drawings from the Renaissance through the 18th century. The collection also has more than 35, 000 prints, drawing, photographs and artist"s books.'},
55 | {'name':'Grunwald Graphic Art Center','city':'Los Angeles','state':'California','description':'Grunwald Graphic Art Center in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
56 | {'name':'J. Paul Getty Museum','city':'Los Angeles','state':'California','description':'J. Paul Getty Museum in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
57 | {'name':'Junior Arts Center Gallery','city':'Los Angeles','state':'California','description':'Junior Arts Center Gallery in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
58 | {'name':'L.A.C.E.','city':'Los Angeles','state':'California','description':'L.A.C.E. in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
59 | {'name':'Laband Art Gallery, Loyola Marymount University','city':'Los Angeles','state':'California','description':'Laband Art Gallery, Loyola Marymount University in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
60 | {'name':'The Latino Museum Of History, Art and Culture','city':'Los Angeles','state':'California','description':'The Latino Museum Of History, Art and Culture in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
61 | {'name':'Los Angeles Art Association/Gallery 825','city':'Los Angeles','state':'California','description':'A pioneer in promoting unknown emerging artists, as well as already established artist, the LA Art Associations goal has been to encourage contemporary So. CA artists and to afford them the opportunity to exhibit their work in a unique art space.'},
62 | {'name':'Los Angeles Municipal Art Gallery','city':'Los Angeles','state':'California','description':'Los Angeles Municipal Art Gallery in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
63 | {'name':'Maxwell H. Dubin/Alfred Wolf Exhibit Center','city':'Los Angeles','state':'California','description':'Maxwell H. Dubin/Alfred Wolf Exhibit Center in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
64 | {'name':'Museum Of African American Art','city':'Los Angeles','state':'California','description':'Museum Of African American Art in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
65 | {'name':'Museum Of Contemporary Art, Los Angeles','city':'Los Angeles','state':'California','description':'Museum Of Contemporary Art, Los Angeles in Los Angeles, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
66 | {'name':'Wildlife and Mining Artifacts Museum','city':'Pine Grove','state':'California','description':'Wildlife and Mining Artifacts Museum in Pine Grove, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
67 | {'name':'Santa Maria Museum Art Center','city':'Santa Maria','state':'California','description':'Santa Maria Museum Art Center in Santa Maria, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
68 | {'name':'Cabrillo College Gallery','city':'Aptos','state':'California','description':'Cabrillo College Gallery in Aptos, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
69 | {'name':'College of the Redwoods Art Gallery','city':'Eureka','state':'California','description':'College of the Redwoods Art Gallery in Eureka, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
70 | {'name':'Romano Gabriel"s Wooden Sculpture Garden','city':'Eureka','state':'California','description':'Romano Gabriel"s Wooden Sculpture Garden in Eureka, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
71 | {'name':'Wildling Art Museum','city':'Los Olivos','state':'California','description':'The Wildling Art Museum is an educational institution dedicated to presenting the art of America"s wilderness for that participants of all ages gain a greater appreciation of the art and a better understanding of the importance of preserving our natural heritage.'},
72 | {'name':'Los Medanos College Art Gallery','city':'Pittsburg','state':'California','description':'Los Medanos College Art Gallery in Pittsburg, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
73 | {'name':'California Heritage Museum','city':'Santa Monica','state':'California','description':'The building that houses the California Heritage Museumâs exhibits is as interesting and unique as the exhibits themselves.'},
74 | {'name':'Santa Monica Museum of Art - Bergamot Station','city':'Santa Monica','state':'California','description':'Through its exhibitions, education, and outreach programs, SMMoA fosters diversity, innovation, and discovery in contemporary artâlocal, national, and international. The Museum celebrates: expanding boundaries; exploring individual differences; enhancing public knowledge of art; and broadening the art experience. SMMoA is a collection of ideas.'},
75 | {'name':'Reese Bullen Gallery','city':'Arcata','state':'California','description':'Reese Bullen Gallery in Arcata, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
76 | {'name':'Triangle Tattoo and Museum','city':'Fort Bragg','state':'California','description':'yes-presently exhibiting in Astoria Oregon at the Columbia River Maritime Museum: "Tattoo, The Art of the Sailor".
77 | At Mystic Seaport Museum in Mystic Conneticut: "Skin and Bones" Exhibit....a traveling exhibit from Philadelphia"s Independence Seaport Museum presenting over two centuries of ancient and mordern tattooing tools, flash, tattoo related art, historic photographs and artifacts to tell the story of how tattoos entered the sailor"s life and what they meant and why they got them.'},
78 | {'name':'Frederick R. Weisman Museum of Art, Pepperdine Univ.','city':'Malibu','state':'California','description':'The Museum includes works by Christo, John McLaughlin, Alison Sarr and Donald Teague.'},
79 | {'name':'Wignall Museum of Contemporary Art','city':'Rancho Cucamonga','state':'California','description':'The Wignall Museum of Contemporary Art is located on the main campus of Chaffey College situated in the City of Rancho Cucamonga in Southern California. The Chaffey Community College District serves a population of 650,000 residents of the Inland Valley including the cities of Chino, Chino Hills, Fontana, Montclair, Ontario, Rancho Cucamonga and Upland.
80 |
81 | The Wignall Museum of Contemporary Art presents four to five exhibitions a year.'},
82 | {'name':'Santa Rosa Jr. College Art Gallery','city':'Santa Rosa','state':'California','description':'Santa Rosa Jr. College Art Gallery in Santa Rosa, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
83 | {'name':'Sonoma County Museum','city':'Santa Rosa','state':'California','description':'The Museum"s purpose is to collect, preserve and exhibit the material culture of Sonoma County and the surrounding region of Northern California. Exhibits constantly change and cover a wide spectrum in time and subject.'},
84 | {'name':'SRJC Museum','city':'Santa Rosa','state':'California','description':'The SRJC Museum has a collection of more than 4000 cataloged items, including art objects and archival materials such as photographs. Traditional Native American art makes up the greatest portion of the collection, with all of the North American Indian culture areas represented. Art forms include ceramics, basketry, beadwork, sculpture, textiles, and jewelry.'},
85 | {'name':'Bakersfield Museum Of Art','city':'Bakersfield','state':'California','description':'Bakersfield Museum Of Art in Bakersfield, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
86 | {'name':'Ohlone College Gallery','city':'Fremont','state':'California','description':'Ohlone College Gallery in Fremont, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
87 | {'name':'Martinez Museum','city':'Martinez','state':'California','description':'Martinez Museum in Martinez, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
88 | {'name':'Randsburg Desert Museum','city':'Randsburg','state':'California','description':'The Rand Desert Museum is a non-profit organization dedicated to preserving and protecting the cultural and architectural history of the Rand Mining District and adjacent histoic sites in the Upper Mojave Desert Region of California. Information about the communites of Randsburg, Johannesburg, Red Moutain ( Osdick ), Atolia, Garlock, Saltdale, and Cantil may be found at the museum. In addition we have information and displays about Burro Schmidts Tunnel and other mines in the area.'},
89 | {'name':'Sebastopol Center for the Arts','city':'Sebastopol','state':'California','description':'Sebastopol Center for the Arts is one of the most vibrant art organizations in Northern California, offering a full spectrum of activities in visual, performing, literary and film arts. We foster an environment where artists are supported in their work, and the arts are treasured by a thriving community.'},
90 | {'name':'Berkeley Art Center','city':'Berkeley','state':'California','description':'Art inspires. The Berkeley Art Center is the City of Berkeley"s art gallery, charged with serving our city, the Bay Area and beyond as a forum for the art of our time in all media. We celebrate art--complex, beautiful, and provocative--through compelling exhibitions, performances and educational opportunities in an exploration of the social and political concerns of our diverse community. Be inspired.'},
91 | {'name':'Berkeley Art Museum & Pacific Film Archive','city':'Berkeley','state':'California','description':'Berkeley Art Museum & Pacific Film Archive in Berkeley, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
92 | {'name':'Department of Museum Studies, John F. Kennedy University','city':'Berkeley','state':'California','description':'The Museum Studies program at John F. Kennedy University is one of the nationâs most recognized museum studies programs and is committed to preparing museum professionals to meet the demands of an increasingly complex profession. Todayâs museum professionals must have the knowledge and skills to serve diverse audiences, create collaborative partnerships with communities, design innovative exhibitions and programs, and develop a sustainable financial base of support.'},
93 | {'name':'Judah L. Magnes Memorial Museum','city':'Berkeley','state':'California','description':'Jewish artwork'},
94 | {'name':'Kala Institute Art Gallery','city':'Berkeley','state':'California','description':'Artists come from all over the world to create at the Kala Institute. The Gallery displays the artists" work temporarily and also shows pieces from their permanent collection.'},
95 | {'name':'California Agricultural Museum','city':'Fresno','state':'California','description':'agricultural equipment of the past, present and future'},
96 | {'name':'Fresno Art Museum','city':'Fresno','state':'California','description':'The Fresno Art Museum collects, preserves, and exhibits to the public tangible objects valuable to art and history. Exhibitions include a wide range of contemporary as well as modern works by local, national and international artists.'},
97 | {'name':'Fresno Historical Society','city':'Fresno','state':'California','description':'The Fresno Historical Society Archives welcomes the use of its collections. The mission of an Archives includes two equally important components. In addition to providing access to primary source material for study and research, an Archives is a repository that is charged with the preservation of primary source materials of all kinds.'},
98 | {'name':'Susan Cummins Gallery','city':'Mill Valley','state':'California','description':'Susan Cummins Gallery in Mill Valley, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
99 | {'name':'Elverhoj Museum of History & Art','city':'Solvang','state':'California','description':'Elverhøj Museum of History & Art occupies a historic hand-crafted structure built in a style derived from the large farmhouses of 18th century Denmark.'},
100 | {'name':'Bolinas Gallery','city':'Bolinas','state':'California','description':'Bolinas Gallery in Bolinas, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
101 | {'name':'Fullerton Museum Center','city':'Fullerton','state':'California','description':'Fullerton Museum Center in Fullerton, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
102 | {'name':'Main Art Gallery - CSUF','city':'Fullerton','state':'California','description':'Main Art Gallery - CSUF in Fullerton, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
103 | {'name':'Muckenthaler Cultural Center','city':'Fullerton','state':'California','description':'Muckenthaler Cultural Center in Fullerton, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
104 | {'name':'Center For Photographic. Arts','city':'Monterey','state':'California','description':'Center For Photographic. Arts in Monterey, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
105 | {'name':'Monterey Museum Of Art','city':'Monterey','state':'California','description':'The museum"s permanent collection includes California art, photography, Asian art, international folk art and features significant bodies of work from Armin Hansen, William Ritschel, Ansel Adams and Edward Weston'},
106 | {'name':'Museum of Monterey (MOM)','city':'Monterey','state':'California','description':'The Museum of Monterey is a world class multi media exhibition space. Our first floor is dedicated to rotating exhibitions of a contemporary nature and our second floor is dedicated to Monterey history and our permanent collection.'},
107 | {'name':'Historical Glass Museum','city':'Redlands','state':'California','description':'Nine rooms of glassware by American manufacturers for over two centuries. Guided tours during weekdays by arrangement. Entry by donation and gift shop to support the museum'},
108 | {'name':'Iris & B. Gerald Cantor Center for Visual Arts','city':'Stanford','state':'California','description':'After being closed for ten years, the Stanford University Museum of Art is finally ready to re-open. The newly rededicated Cantor Arts Center will offer a new home for the collections, exhibitions and academic research.'},
109 | {'name':'City of Brea Gallery','city':'Brea','state':'California','description':'City of Brea Gallery in Brea, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
110 | {'name':'Brand Gallery','city':'Glendale','state':'California','description':'Brand Gallery in Glendale, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
111 | {'name':'Saint Mary"s College Museum of Art','city':'Moraga','state':'California','description':'The Hearst Art Galley is known for diverse, museum-quality exhibitions, publications and educational programs. The Gallery has over 2000 works in its permanent collection. Temporary exhibitions of contemporary, ethnographic and international subjects.'},
112 | {'name':'Richmond Art Center','city':'Richmond','state':'California','description':'Richmond Art Center in Richmond, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
113 | {'name':'Alan Short Gallery','city':'Stockton','state':'California','description':'Alan Short Gallery in Stockton, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
114 | {'name':'Delta College Clever Planetarium and Earth Science Center','city':'Stockton','state':'California','description':'The Clever Planetarium completed and extensive remodeling and refurbishing program earlier this year. New items such as âSciDome HDâMagic PlanetâMagic Planet is new technology,âWe have one of the few in California.'},
115 | {'name':'The Haggin Museum','city':'Stockton','state':'California','description':'The Haggin Museum, an art and history museum located in Stockton, has been referred to by Sunset magazine as "one of the undersung gems of California." The impressive brick building has stood in the center of Stocktonâs lush Victory Park for 79 years, but itâs whatâs on the inside that makes it worth visiting.'},
116 | {'name':'L. H. Horton Jr. Art Gallery','city':'Stockton','state':'California','description':'The LH Horton Jr Gallery is a fine arts exhibition program within the Visual Arts Department of San Joaquin Delta College, and a venue of Delta Center for the Arts. Six exhibitions are presented annually, including a series of three juried exhibitions (ceramics, painting & sculpture, and photography); biennial faculty and alumni shows, a thematic small group show, and an annual student art show.'},
117 | {'name':'Mexican Heritage Center and Gallery','city':'Stockton','state':'California','description':'A museum with exhibits on local Hispanic history and art.'},
118 | {'name':'Burlingame Museum of Pez Memorabilia','city':'Burlingame','state':'California','description':'Austrian candy executive Eduard Haas invented Pez candy in 1927. The original little candy bricks were peppermint. In fact, the word Pez is an abbreviation of the German word for peppermint.(PfeffErminZ) Pez candy was originally sold in small tins. The first Pez dispenser appeared around 1950.'},
119 | {'name':'Peninsula Museum of Art','city':'Burlingame','state':'California','description':'Fine Art Museum; rotating exhibitions of 2D and 3D art by extraordinary artists of San Francisco"s Greater Bay Area. Includes art reference library (2000+ books) and 30 studios for a diverse group of professional artists.'},
120 | {'name':'Ansel Adams Gallery','city':'Gonzales','state':'California','description':'Ansel Adams Gallery in Gonzales, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
121 | {'name':'American Center for Wine, Food & the Arts','city':'Napa','state':'California','description':'American Center for Wine, Food & the Arts in Napa, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
122 | {'name':'Riverside Art Museum','city':'Riverside','state':'California','description':'Riverside Art Museum in Riverside, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
123 | {'name':'Riverside Community College Art Gallery','city':'Riverside','state':'California','description':'Riverside Community College Art Gallery in Riverside, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
124 | {'name':'Riverside Metropolitan Museum','city':'Riverside','state':'California','description':''},
125 | {'name':'Sweeney Art Gallery, U.C. Riverside','city':'Riverside','state':'California','description':'Sweeney Art Gallery, U.C. Riverside in Riverside, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
126 | {'name':'UCR / CA Museum Of Photography','city':'Riverside','state':'California','description':'UCR / CA Museum Of Photography in Riverside, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
127 | {'name':'Nethercutt Collection','city':'Sylmar','state':'California','description':'Nethercutt Collection in Sylmar, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
128 | {'name':'McArthur-Burney Falls Memorial State Park','city':'Burney','state':'California','description':'natural history'},
129 | {'name':'Earth Planet Museum','city':'Grass Valley','state':'California','description':'Earth Planet Museum in Grass Valley, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
130 | {'name':'William S. Hart Museum','city':'Newhall','state':'California','description':'William S. Hart Museum in Newhall, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
131 | {'name':'University Art Gallery, CSUS','city':'Rohnert Park','state':'California','description':'University Art Gallery, CSUS in Rohnert Park, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
132 | {'name':'Chumash Indian Museum','city':'Thousand Oaks','state':'California','description':'The goal at the center is to provide the public with an awareness of the Chumash People and their historical, cultural, material and present day interactions throughout Southern California. A blend of resources are used to accommodate a wide variety of interests!'},
133 | {'name':'Sharpsteen Museum','city':'Calistoga','state':'California','description':'The Sharpsteen Museum is a unique historical museum. In addition to its many historical exhibits, it uses extensive dioramas to depict Calistoga at it height as the elegant 1860s Hot Springs resort developed by entrepreneur and pioneer Sam Brannan.'},
134 | {'name':'Orange County Art Museum','city':'Newport Beach','state':'California','description':'Orange County Art Museum in Newport Beach, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
135 | {'name':'Crocker Art Museum','city':'Sacramento','state':'California','description':'The Crocker Art Museum was the first art museum in the Western U.S. and is now one of the leading art museums in California. Established in 1885, the Museum features one of the countryâs finest collections of Californian art, exceptional holdings of master drawings, a comprehensive collection of international ceramics, as well as European, Asian, African, and Oceanic art. The centerpiece of the Museum is the gallery building.'},
136 | {'name':'Gregory Kondos Art Gallery','city':'Sacramento','state':'California','description':'Gregory Kondos Art Gallery in Sacramento, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
137 | {'name':'La Raza/Galeria Posada','city':'Sacramento','state':'California','description':''},
138 | {'name':'Robert Else Gallery','city':'Sacramento','state':'California','description':'Robert Else Gallery in Sacramento, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
139 | {'name':'Bachelor Officers" Quarters at Angel Island','city':'Tiburon','state':'California','description':'Bachelor Officers" Quarters at Angel Island in Tiburon, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
140 | {'name':'West Garrison Officers" Quarters and Bakehouse','city':'Tiburon','state':'California','description':'West Garrison Officers" Quarters and Bakehouse in Tiburon, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
141 | {'name':'Children"s Museum of Art & Imagination','city':'Campbell','state':'California','description':'Children"s Museum of Art & Imagination in Campbell, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
142 | {'name':'Coastal Arts League Museum','city':'Half Moon Bay','state':'California','description':'The Coastal Arts League is a non-profit corporation founded in 1979 to develop and support creative artistic talent in the Coastside Community. The Coastal Arts League maintains a free Museum and a Museum Store to show-case the talent of Coastside artists and art groups. Monthly exhibitions in the Museum may be the work of individual artists or other, regional, art organizations.'},
143 | {'name':'Sierra Mono Indian Museum','city':'North Fork','state':'California','description':'Permanent collections include a wide variety of Native American baskets and cultural artifacts. Also on display is the Tettleton Wildlife Diorama Collection consisting of over 100 freestanding taxidermy animals of North America and Asia. Other collections include historical photographs, cultural items, beadwork and weapons.'},
144 | {'name':'Salinas Community Center','city':'Salinas','state':'California','description':'Salinas Community Center in Salinas, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
145 | {'name':'Joslyn Fine Arts Gallery','city':'Torrance','state':'California','description':'Joslyn Fine Arts Gallery in Torrance, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
146 | {'name':'Center For Photographic Art','city':'Carmel','state':'California','description':'Center For Photographic Art in Carmel, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
147 | {'name':'The Clark Center for Japanese Art and Culture','city':'Hanford','state':'California','description':'Through a significant gift of Japanese paintings from the Clarks, the Clark Center"s collection was established in October of 1995. Nearly one hundred and sixty hanging scrolls, thirty pairs or single screens, ten works of sculpture mainly from the Kamakura period (1185-1333), and a number of pieces of decorative art primarily from the Meiji period (1868-1912) are housed at the Center. The gallery spaces allow for approximately ten percent of the collection to be on display at one time.'},
148 | {'name':'Art Gallery, CSUN','city':'Northridge','state':'California','description':'The gallery program emphasizes art from international and multi-cultural perspectives, particularly concentrating on art of the Pacific Rim.'},
149 | {'name':'AICAIE, The Visual Arts Gallery','city':'San Bernardino','state':'California','description':'At our campus, we offer Bachelor of Science degree programs in Culinary Management, Fashion & Retail Management, Game Art & Design, Graphic Design, Interior Design, Media Arts & Animation, and Web Design & Interactive Media. We also offer a Bachelor of Fine Arts degree in Fashion Design, and Associate degree programs in Culinary Arts and Baking & Pastry, and Graphic Design.'},
150 | {'name':'Robert and Frances Fullerton Museum of Art','city':'San Bernardino','state':'California','description':'The Robert and Frances Fullerton Museum of Art has accumulated a collection of close to 1,200 objects focusing on ceramics, ancient and contemporary art; the largest of which includes some 500 pieces encompassing over 4,000 years of Egyptian history. With nearly 7,500 square feet of gallery space, a portion of the museum"s permanent collection is on continuous display as well as a dynamic schedule of visiting exhibitions.'},
151 | {'name':'Tulare Historical Museum','city':'Tulare','state':'California','description':'Built on the site of the city"s first schoolhouse, this museum chronicles the city"s railroad and agriculture background with historical displays, tools, artifacts and old photographs. It also features replicas of a barbershop and a blacksmith shop.'},
152 | {'name':'University Art Gallery, CSUDH','city':'Carson','state':'California','description':'University Art Gallery, CSUDH in Carson, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
153 | {'name':'California State University Hayward Art Gallery','city':'Hayward','state':'California','description':'California State University Hayward Art Gallery in Hayward, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
154 | {'name':'Sun Gallery','city':'Hayward','state':'California','description':'The Sun Gallery features art exhibitions showcasing creative expression of multi-cultural themes, current issues and thought provoking ideas from prominent California artists and promising newcomers, and the Children"s Art Enrichment program.'},
155 | {'name':'Junior Center of Art and Science','city':'Oakland','state':'California','description':'The Junior Center is a children"s art and science center which offers after school and summer classes for children ages 5 to 17, school outreach programs for elementary and middle school groups, a rotating cultural exhibit program, drop-in activities and community events for 2 to 12 year olds and their families, professional developement workshop for classroom teachers. Junior Center programs serve children and schools in Oakland and 12 other East Bay cities.'},
156 | {'name':'Kennedy Art Center Gallery','city':'Oakland','state':'California','description':'Kennedy Art Center Gallery in Oakland, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
157 | {'name':'Lillian Paley Center for Visual Arts','city':'Oakland','state':'California','description':'Lillian Paley Center for Visual Arts in Oakland, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
158 | {'name':'Lireille - Gallery of Contemporary Jewelry and Art','city':'Oakland','state':'California','description':''},
159 | {'name':'Mills College Art Museum','city':'Oakland','state':'California','description':'Mills College Art Museum in Oakland, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
160 | {'name':'Museum of Children"s Art (MOCHA)','city':'Oakland','state':'California','description':'MOCHA provides hands-on arts learning experiences for children and their families in our museum, in schools and preschools, and in public venues. MOCHA also prepares educators to teach art and integrate arts learning across academic subject areas. As well, we advocate for the arts as an essential part of a strong, vital and diverse community. We emphasize outreach to children in low-income communities that do not typically have wide access to the arts.'},
161 | {'name':'Skyline College Gallery','city':'San Bruno','state':'California','description':'Skyline College Gallery in San Bruno, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
162 | {'name':'Grace Hudson Museum & Sun House','city':'Ukiah','state':'California','description':'The Grace Hudson Museum and Sun House in Ukiah, California, is an art, history and anthropology museum focusing on the lifeworks of artist Grace Carpenter Hudson (1865-1937) and her ethnologist husband, Dr. John W. Hudson (1857-1936). Changing interdisciplinary exhibitions and public programs feature Western American art, California Indian cultures, histories of California"s diverse North Coast region, and the work of contemporary regional artists.'},
163 | {'name':'Tattoo Art Museum','city':'Ukiah','state':'California','description':'Tattoo Art Museum in Ukiah, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
164 | {'name':'Adobe Art Gallery','city':'Castro Valley','state':'California','description':'The Adobe Art Gallery is a program and facility of the Hayward Area Recreation and Park District. The Adobe Art Gallery is a public fine art gallery, committed to promoting and encouraging visual arts within the District.'},
165 | {'name':'San Benito Co. Arts. Comm.','city':'Hollister','state':'California','description':'San Benito Co. Arts. Comm. in Hollister, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
166 | {'name':'Imperial Valley Desert Museum','city':'Ocotillo','state':'California','description':'The Imperial Valley Desert Museum is a new facility in the heart of the Yuha Desert housing Native American and historic artifacts collected from within the Imperial Valley. Opening a new museum in the twenty-first century, we do not want to be seen as an exhibit within four walls, but we want to engage and interact outside of the limitations of the "box", our new building, both metaphorically and physically.'},
167 | {'name':'Casa Romantica Cultural Center & Gardens','city':'San Clemente','state':'California','description':'Perched on a bluff overseeing the historic San Clemente Pier, the magnificent Casa is a living demonstration of California history, culture and ecology â a showplace for the entire region. Casa Romantica is a genuine part of California, not a commercial re-creation. In an era when we seek connection, the Casa is tangible â a way to share in the experiences of other times, cultures, and people â and through that to learn more about our world.'},
168 | {'name':'Surfing Heritage Foundation','city':'San Clemente','state':'California','description':'Exhibit Details: Participation in: California State Fair Exhibits, Newport Beach Nautical Museum surf exhibit, Moonshine festivals; Laguna Beach Surf Culture Exhibit which traveled around the world; fielded a request from Los Angeles County Museum of Art for the loan of a surfboard and historical materials for display; exhibit on the History of Surfing in Orange County at the John Wayne Airport.'},
169 | {'name':'McCune Rare Book and Art Collection','city':'Vallejo','state':'California','description':'The McCune is a hands-on rare book collection. It contains a leaf from the Gutenberg Bible, 6 incunabula, a 1517 edition of Virgil with over 200 illustrations. This collection is a history of printing from the 15th-21st century with many famous printers represented. The unique thing about this collection is that we encourage people to actually sit down to read and examine the books and art. This means hands-on review of our items.'},
170 | {'name':'Imagine It, Inc.','city':'Ceres','state':'California','description':'Hands on Science and Fine Arts experiences for children ages 4-14. Learn and experience through exploration and investigation. Changing exhibits focus on an area in science or art. Classes are offered on a varitey of topics. Excellent resource for home school, charter, and public school field trips. Experiences can be customized to meet your needs. Birthday parties with a science theme are available.'},
171 | {'name':'Madame Tussauds Hollywood','city':'Hollywood','state':'California','description':'Madame Tussauds is a wax museum in Hollywood, CA with branches in a number of major cities. It was founded by wax sculptor Marie Tussaud. Madame Tussauds is a major tourist attraction, displaying waxworks of historical and political figures, film stars, sports stars and more.'},
172 | {'name':'Gallery Of Historical Figures','city':'Ojai','state':'California','description':'The Gallery exhibits the Historical Figures(R) created by George Stuart. The Figures are highly accurate mixed media sculptures of famous and infamous people in history.'},
173 | {'name':'Ojai Valley Museum of History and Art','city':'Ojai','state':'California','description':'Housed in a National Landmark, 1919, Spanish Revival Catholic Church, the museum houses a permanent collection of Ojai related History and Art; we have a Permanent Gallery which exhibits the history of the town of Ojai; Chumash Tribe; early Spanish Ranchos, etc. The Rotating Gallery changes every 8 to 10 weeks with temporary exhibitions addressing the art, history or culture found in Ojai and the Ojai Valley.
174 | Gift Shop open Museum Hours and carries Ojai related Books, objects etc.'},
175 | {'name':'African American Museum Of Fine Arts','city':'San Diego','state':'California','description':'African American Museum Of Fine Arts in San Diego, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
176 | {'name':'Balboa Art Conservation Center','city':'San Diego','state':'California','description':'Balboa Art Conservation Center in San Diego, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
177 | {'name':'Mingei International Museum','city':'San Diego','state':'California','description':'Mingei International Museum in San Diego, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
178 | {'name':'Museum Of Photographic Arts','city':'San Diego','state':'California','description':'One of the few institutions in the country devoted to the photographic arts, the Museum of Photographic Arts houses more than 7,000 works, representing the entire history of photography, its aesthetic movements, and technological advancements. Illustrating the complex and varied history of the medium, the museum"s collection is particularly strong in modern and contemporary work, specifically social documentary photography and photojournalism.'},
179 | {'name':'San Diego Museum Of Art','city':'San Diego','state':'California','description':'The San Diego Museum of Art is dedicated to the enrichment of the individual and the community through the acquisition, preservation, presentation and interpretation of works of art that demonstrate the enduring achievements of the human experience.'},
180 | {'name':'Sushi Performance and Visual Art','city':'San Diego','state':'California','description':'Sushi Performance and Visual Art, founded in 1980, is a San Diego-based nonprofit multi-disciplinary presenting organization, which cultivates alternative voices in the contemporary arts. Sushi is committed to providing its artists and audiences with a laboratory where creative exploration, community engagement, and new ideas flourish.'},
181 | {'name':'Timken Museum Of Art','city':'San Diego','state':'California','description':'Timken Museum Of Art in San Diego, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
182 | {'name':'Ventura County Museum, History & Art','city':'Ventura','state':'California','description':'Ventura County Museum, History & Art in Ventura, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
183 | {'name':'San Fernando Valley Relics Museum','city':'Chatsworth','state':'California','description':'Valley Relics is a collection of rare photos, yearbooks, documents, postcards, toys, photo negatives, vintage signs, books, antiques, and artifacts from the 1800"s to present, from the San Fernando Valley. The collection is currently housed in Chatsworth, CA. and is open every Saturday for viewing from 10:00am - 3:00pm.'},
184 | {'name':'Huntington Beach Art Center','city':'Huntington Beach','state':'California','description':'Huntington Beach Art Center in Huntington Beach, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
185 | {'name':'Museum Of History & Art, Ontario','city':'Ontario','state':'California','description':'the Museum"s collections illustrate the history of Ontario and surrounding communities. Exhibits focus on local, regional or national significance.'},
186 | {'name':'American Indian Contemporary Arts','city':'San Francisco','state':'California','description':'American Indian Contemporary Arts has a mission to support and promote creative expressions of living Native American artists. This mission is pursued through local and traveling exhibits, lectures and a referral program.'},
187 | {'name':'Asian Art Museum of San Francisco','city':'San Francisco','state':'California','description':'Asian Art Museum of San Francisco in San Francisco, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
188 | {'name':'Cartoon Art Museum','city':'San Francisco','state':'California','description':'Cartoon Art Museum in San Francisco, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
189 | {'name':'Charles Pankow Collection','city':'San Francisco','state':'California','description':'Charles Pankow Collection in San Francisco, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
190 | {'name':'Chinese Culture Center','city':'San Francisco','state':'California','description':'Chinese Cultural Center in San Francisco, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
191 | {'name':'Exploratorium','city':'San Francisco','state':'California','description':'We"re now open in a spectacular new location at Pier 15 on the Embarcadero at Green St. in San Francisco. There are 150 new exhibits for a total of 600, indoors and out, including many beloved classics; a Bay Observatory; a bigger focus on tinkering and social science; and more. Come explore!'},
192 | {'name':'Fine Arts Museums Of San Francisco','city':'San Francisco','state':'California','description':'Fine Arts Museums Of San Francisco in San Francisco, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
193 | {'name':'Hastings College Art Gallery','city':'San Francisco','state':'California','description':'Hastings College Art Gallery in San Francisco, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
194 | {'name':'International Children"s Art Museum','city':'San Francisco','state':'California','description':'Located within the World Trade Center section of San Francisco"s landmark Ferry Building, the International Children"s Art Museum features art from children around the world. Its purpose is to help viewers broaden their perspective of art and cultures by displaying, comparing, and contrasting the many ways in which youth the world over interpret life.'},
195 | {'name':'Madame Tussauds San Francisco','city':'San Francisco','state':'California','description':'Madame Tussauds exceptionally showcases more than 100 exquisite wax figures of famous celebrities, combining legendary and contemporary stars from the world of film, sports and entertainment.'},
196 | {'name':'Mexican Museum','city':'San Francisco','state':'California','description':'Fort Mason Center offers a variety of cultural activities as well as being in close proximity to the Marina Green, Crissy Field and the Golden Gate Bridge. Stop by and visit the museum while touring the Marina District and other nearby tourist destinations!'},
197 | {'name':'Mission Cultural Center for Latino Arts','city':'San Francisco','state':'California','description':'The Cultural Center has an extensive collection of prints, the majority of which were done by Latin artists.'},
198 | {'name':'Museo Italo-Americano','city':'San Francisco','state':'California','description':'The museums exhibits artwork by both renowned and emerging Italian or Italian-American artists. Most works are from the 20th century, but some 18th century engravings compliment the permanent collection. It is the only museum of its kind in the U.S.'},
199 | {'name':'San Francisco African American Historical & Cultural Society','city':'San Francisco','state':'California','description':'The mission of the Society is:
200 |
201 | To promote an understanding of the role people of African descent have played in world history.
202 | To collect a library of material depicting and recording the contributions made by people of African descent to world history and culture.
203 | To make available the Societyâs materials and knowledge concerning people of African descent to all who may benefit by such information.'},
204 | {'name':'San Francisco Art Institute','city':'San Francisco','state':'California','description':'San Francisco Art Institute in San Francisco, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
205 | {'name':'San Francisco Art Institute Galleries','city':'San Francisco','state':'California','description':'San Francisco Art Institute Galleries in San Francisco, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
206 | {'name':'San Francisco Craft & Folk Art Museum','city':'San Francisco','state':'California','description':'The Museum"s exhibitions of contemporary craft display the work of skilled artists using glass, ceramics, textiles, wood and metal. Exhibitions of traditional ethnic art explore the rich heritage of tribal cultures from around the world.'},
207 | {'name':'San Francisco Museum of Craft and Folk Art','city':'San Francisco','state':'California','description':'San Francisco Museum of Craft and Folk Art in San Francisco, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
208 | {'name':'San Francisco Museum Of Modern Art','city':'San Francisco','state':'California','description':'San Francisco Museum Of Modern Art in San Francisco, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
209 | {'name':'San Francisco Performing Arts Library/Museum','city':'San Francisco','state':'California','description':'San Francisco Performing Arts Library/Museum in San Francisco, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
210 | {'name':'Bedford Gallery at the Dean Leshser Regional Center for the Arts','city':'Walnut Creek','state':'California','description':'Bedford Gallery at the Dean Leshser Regional Center for the Arts in Walnut Creek, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
211 | {'name':'Valley Art Center','city':'Walnut Creek','state':'California','description':'Valley Art Center in Walnut Creek, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
212 | {'name':'Edward-Dean Museum & Gardens','city':'Cherry Valley','state':'California','description':'Take a Tour of the Edward-Dean Museum: Make the museum your own personal museum by taking a guided group tour. The friendly staff and docents at the Edward-Dean Museum will guide you in and out of the museum showing you the many cultural treasures hidden in the picturesque setting of Cherry Valley. Guided tours are by appointment only and are $5 per person and non-guided walk-through tours are $3.'},
213 | {'name':'Beall Center for Art and Technology','city':'Irvine','state':'California','description':''},
214 | {'name':'Irvine Fine Arts Center','city':'Irvine','state':'California','description':'Irvine Fine Arts Center in Irvine, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
215 | {'name':'Irvine Museum','city':'Irvine','state':'California','description':'Dedicated to the preservation and display of California art of the Impressionist Period (1890-1930).'},
216 | {'name':'Carnegie Art Museum','city':'Oxnard','state':'California','description':'This unique "Greek Temple" hosts special changing exhibits from international art collections and Museum"s permanent collection of California Impressionism and Hollywood photography.'},
217 | {'name':'Channel Islands Maritime Museum','city':'Oxnard','state':'California','description':'The maritime museum is open in its new site on the west bank of Channel Islands Harbor with three major galleries featuring 4 centuries of seascape paintings and global naval history illustrated with historic ship models.'},
218 | {'name':'Mullin Automotive Museum','city':'Oxnard','state':'California','description':'The Mullin Automotive Museum is an homage to the art deco and the machine age â eras that produced exquisite art and magnificent automobiles. The museum is home to the finest historic French automobiles from the Bugatti to the Voisin as well as significant and representative decorative art from the 1920s and 1930s.'},
219 | {'name':'Highlands Art Center','city':'Weaverville','state':'California','description':'Highlands Art Center in Weaverville, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
220 | {'name':'Janet Turner Print Museum','city':'Chico','state':'California','description':'Janet Turner Print Collection & Gallery in Chico, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
221 | {'name':'Marin Community College Art Gallery','city':'Kentfield','state':'California','description':'Marin Community College Art Gallery in Kentfield, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
222 | {'name':'Pacific Grove Art Center','city':'Pacific Grove','state':'California','description':'Pacific Grove Art Center in Pacific Grove, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
223 | {'name':'Boehm Gallery of Palomar College','city':'San Marcos','state':'California','description':'The permanent collection has over 200 art works from the 15th to the 20th century in a variety of mediums.'},
224 | {'name':'Chula Vista Nature Center','city':'Chula Vista','state':'California','description':'The Chula Vista Nature Center is a living, breathing, flapping, buzzing and splashing home to the unique animals and plants of Southern California. This Zoo & Aquarium is a convenient six miles south of downtown San Diego. Kids love meeting the live owls & hawks while exploring the aquarium exhibits, making nature crafts, and more. The Nature Center sits on the 316-acre Sweetwater Marsh National Wildlife Refuge.'},
225 | {'name':'La Jolla Art Association Gallery','city':'La Jolla','state':'California','description':'The La Jolla Art Association is a 501(c)(3) non profit organization promoting art.'},
226 | {'name':'Mandeville Art Gallery','city':'La Jolla','state':'California','description':'Mandeville Art Gallery in La Jolla, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
227 | {'name':'Museum Of Contemporary Art, San Diego','city':'La Jolla','state':'California','description':'Museum Of Contemporary Art, San Diego in La Jolla, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
228 | {'name':'Stuart Collection UCSD','city':'La Jolla','state':'California','description':'The collection results from an innovative partnership between the university and the Stuart Collection. Under an agreement forged in 1982 (and renewed in 2003), the entire campus may be considered as sites for commissioned sculpture. It is further distinguished from a traditional sculpture garden by integration of some of the projects with university buildings.'},
229 | {'name':'University Art Gallery UCSD','city':'La Jolla','state':'California','description':'University Art Gallery UCSD in San Diego, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
230 | {'name':'University Art Gallery, UCSD','city':'La Jolla','state':'California','description':'University Art Gallery, UCSD in La Jolla, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
231 | {'name':'Aerie Sculpture Garden and Gallery','city':'Palm Desert','state':'California','description':'Aerie Sculpture Garden and Gallery in Palm Desert, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
232 | {'name':'College Of The Desert Art Gallery','city':'Palm Desert','state':'California','description':'College Of The Desert Art Gallery in Palm Desert, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
233 | {'name':'Angels Gate Cultural Center','city':'San Pedro','state':'California','description':'Angels Gate Cultural Center in San Pedro, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
234 | {'name':'Fort MacArthur Military Museum','city':'San Pedro','state':'California','description':'The Museum is dedicated to the preservation and interpretation of the Harbor Defenses of Los Angeles from 1916-1975. The 20-acre facility includes the only Taft-era fortification built in the continental United States and exhibits of military artifacts.'},
235 | {'name':'Filoli','city':'Woodside','state':'California','description':'Located 30 miles south of San Francisco, Filoli is an historic site of the National Trust for Historic Preservation and one of the finest remaining country estates of the early 20th century. Whether enjoying its beauty or pursuing its educational opportunities, we invite you to explore this cherished community resource.'},
236 | {'name':'Claremont Graduate School Galleries','city':'Claremont','state':'California','description':'Claremont Graduate School Galleries in Claremont, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
237 | {'name':'Petterson Museum Of Intercultural Art at Pilgrim Place','city':'Claremont','state':'California','description':'Petterson Museum Of Intercultural Art at Pilgrim Place in Claremont, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
238 | {'name':'Pomona College Museum of Art','city':'Claremont','state':'California','description':'The fine art collections of Pomona College are housed in the Pomona College Museum of Art, at the Montgomery Art Center, which was inaugurated in 1958 and named for the late Gladys K. Montgomery, Pomona trustee and Los Angeles civic leader.'},
239 | {'name':'Ruth Chandler Williamson Gallery','city':'Claremont','state':'California','description':'Ruth Chandler Williamson Gallery in Claremont, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
240 | {'name':'Laguna Art Museum','city':'Laguna Beach','state':'California','description':'The Laguna Art Museum is a museum of American art with a special focus on the art of California. Its purpose is to provide the public with exposure to art.'},
241 | {'name':'Palm Springs Art Museum','city':'Palm Springs','state':'California','description':'On April 9, 2010, the Palm Springs Art Museum held the 5th annual Meet the Museum party, a membership drive that traditionally occurs on the Friday of White Party Weekend. More than 1,100 new and renewing museum members attended, raising over $60,000 in membership funds that directly support the operational costs of the museum.'},
242 | {'name':'Public Art Works','city':'San Rafael','state':'California','description':'Public Art Works in San Rafael, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
243 | {'name':'San Marcos Gallery Dominican College','city':'San Rafael','state':'California','description':'San Marcos Gallery Dominican College in San Rafael, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
244 | {'name':'Napa Valley Museum','city':'Yountville','state':'California','description':'Napa Valley Museum brings together collections of art, history and natural science under one roof to tell the extraordinary stories of Napa Valley and its people. Art exhibitions feature the work of local and national artists. Content originates from private collections and artist studios and is borrowed from museums, galleries, and other sources. Since our founding in 1972, our goal has been to integrate history and art into the lives of people'},
245 | {'name':'Euphrat Museum of Art - De Anza College','city':'Cupertino','state':'California','description':'Euphrat Museum of Art - De Anza College in Cupertino, CA is one of more than 15,400 museums in the MuseumsUSA directory. Find an exciting museum to visit where you live or vacation today.'},
246 | ])
--------------------------------------------------------------------------------