GitHub GraphQL Rails 示例项目教程
1. 项目的目录结构及介绍
github-graphql-rails-example/
├── app/
│ ├── assets/
│ ├── controllers/
│ ├── helpers/
│ ├── models/
│ ├── views/
│ └── ...
├── bin/
├── config/
│ ├── environments/
│ ├── initializers/
│ └── ...
├── db/
├── lib/
│ └── tasks/
├── public/
├── test/
├── Gemfile
├── Gemfile.lock
├── LICENSE
├── README.md
├── Rakefile
└── config.ru
目录结构介绍
- app/: 包含应用程序的主要代码,包括控制器、模型、视图等。
- bin/: 包含可执行文件,如 Rails 脚本。
- config/: 包含应用程序的配置文件,如路由、数据库配置等。
- db/: 包含数据库相关的文件,如迁移文件。
- lib/: 包含自定义模块和库。
- public/: 包含静态文件,如图片、CSS 和 JavaScript 文件。
- test/: 包含测试文件。
- Gemfile: 定义项目所需的 Ruby gems。
- Gemfile.lock: 锁定 gems 的版本。
- LICENSE: 项目的许可证。
- README.md: 项目的说明文档。
- Rakefile: 定义 Rake 任务。
- config.ru: 用于启动 Rack 服务器的配置文件。
2. 项目的启动文件介绍
config.ru
config.ru
文件是 Rack 服务器的配置文件,用于启动 Rails 应用程序。内容如下:
# This file is used by Rack-based servers to start the application.
require_relative "config/environment"
run Rails.application
bin/rails
bin/rails
文件是 Rails 的脚本文件,用于执行各种 Rails 命令,如启动服务器、生成代码等。
#!/usr/bin/env ruby
APP_PATH = File.expand_path('../config/application', __dir__)
require_relative '../config/boot'
require 'rails/commands'
3. 项目的配置文件介绍
config/application.rb
config/application.rb
文件包含应用程序的主要配置,如加载路径、中间件等。
require_relative "boot"
require "rails"
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
require "active_record/railtie"
require "active_storage/engine"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_mailbox/engine"
require "action_text/engine"
require "action_view/railtie"
require "action_cable/engine"
require "rails/test_unit/railtie"
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
module GithubGraphqlRailsExample
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 6.1
# Configuration for the application, engines, and railties goes here.
#
# These settings can be overridden in specific environments using the files
# in config/environments, which are processed later.
#
# config.time_zone = "Central Time (US & Canada)"
# config.eager_load_paths << Rails.root.join("extras")
end
end
config/routes.rb
config/routes.rb
文件定义应用程序的路由。
Rails.application.routes.draw do
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
# Defines the root path route ("/")
# root "articles#index"
end
config/database.yml
config/database.yml
文件配置数据库连接信息。
default: &default
adapter: sqlite3
pool: <