قم بإنشاء تطبيق Ruby on Rails جديد باستخدام MySQL بدلاً من SQLite

StackOverflow https://stackoverflow.com/questions/3585

  •  08-06-2019
  •  | 
  •  

سؤال

أريد إنشاء تطبيق Rails الخاص بي باستخدام MySQL، لأنني أحبه كثيرًا.كيف يمكنني القيام بذلك في أحدث إصدار من Rails بدلاً من SQLite الافتراضي؟

هل كانت مفيدة؟

المحلول

إذا كان لديك بالفعل مشروع Rails، فقم بتغيير المحول في ملف config/database.yml ملف ل mysql وتأكد من تحديد اسم مستخدم وكلمة مرور صالحين، ومقبس اختياريًا:

development:
  adapter: mysql2
  database: db_name_dev
  username: koploper
  password:
  host: localhost
  socket: /tmp/mysql.sock

بعد ذلك، تأكد من تحرير ملف Gemfile الخاص بك ليشمل mysql2 أو activerecord-jdbcmysql-adapter (في حالة استخدام jruby).

نصائح أخرى

عادةً، يمكنك إنشاء تطبيق Rails جديد باستخدام

rails ProjectName

لاستخدام MySQL، استخدم

rails new ProjectName -d mysql

بالنسبة لـ Rails 3، يمكنك استخدام هذا الأمر لإنشاء مشروع جديد باستخدام mysql:

$ rails new projectname -d mysql

انتقل إلى المحطة واكتب:

rails new <project_name> -d mysql

إذا لم تكن قد أنشأت تطبيقك بعد، فما عليك سوى الانتقال إلى cmd (لنظام Windows) أو Terminal (لنظام Linux/unix) واكتب الأمر التالي لإنشاء تطبيق Rails باستخدام قاعدة بيانات MySQL:

$rails new <your_app_name> -d mysql

إنه يعمل مع أي شيء أعلى من الإصدار 3 من Rails.إذا كنت قد أنشأت تطبيقك بالفعل، فيمكنك القيام بأحد الأمرين التاليين:

  1. إنشاء أسم آخر التطبيق مع قاعدة بيانات MySQL، انتقل إلى القرص المضغوط أسم آخر/config/ وانسخ ملف data.yml من هذا التطبيق الجديد.قم بلصقه في قاعدة البيانات.yml الخاصة بـ your_app_name برنامج.ولكن تأكد من تغيير أسماء قاعدة البيانات وتعيين اسم المستخدم/كلمة المرور لقاعدة البيانات الخاصة بك وفقًا لذلك في ملف قاعدة البيانات.yml بعد القيام بذلك.

أو

  1. اذهب إلى القرص المضغوط your_app_name/config/ وافتح ملف data.yml.إعادة التسمية على النحو التالي:

تطوير:
مشترك كهربائي:mysql2
قاعدة البيانات:db_name_name
اسم المستخدم:جذر
كلمة المرور:
يستضيف:مضيف محلي
قابس كهرباء:/tmp/mysql.sock

علاوة على ذلك، قم بإزالة الجوهرة "sqlite3" من ملف Gemfile الخاص بك وأضف الجوهرة "mysql2"

إذا كنت تستخدم Rails 3 أو إصدار أحدث

rails new your_project_name -d mysql

إذا كان لديك إصدار سابق

rails new -d mysql your_project_name

لذا، قبل إنشاء مشروعك، عليك العثور على إصدار Rails.التي يمكنك العثور عليها

rails -v
rails -d mysql ProjectName
rails new <project_name> -d mysql

أو

rails new projectname

التغييرات في config/database.yml

development:
  adapter: mysql2
  database: db_name_name
  username: root
  password:
  host: localhost
  socket: /tmp/mysql.sock

إنشاء تطبيق باستخدام الخيار -d

rails new AppName -d mysql
$ rails --help 

هو دائما أفضل صديق لك

الاستخدام:

$ rails new APP_PATH[options]

لاحظ أيضًا أنه يجب إعطاء الخيارات بعد اسم التطبيق

القضبان و MySQL

$ rails new project_name -d mysql

القضبان وpostgresql

$ rails new project_name -d postgresql

يجب عليك استخدام المفتاح -D بدلاً من -d لأنه سينشئ تطبيقين وmysql بدون مجلدات وثائق.

  rails -D mysql project_name  (less than version 3)

  rails new project_name -D mysql (version 3 and up)

بدلا من ذلك يمكنك فقط استخدام --database خيار.

ما عليك سوى الانتقال إلى وحدة التحكم Rails واكتب:

rails new YOURAPPNAME -d mysql

في Rails 3، يمكنك فعل ذلك

$rails new projectname --database=mysql

إذا كنت تقوم بإنشاء تطبيق Rails جديد، فيمكنك ضبط قاعدة البيانات باستخدام المفتاح -d مثل هذا:

rails -d mysql myapp

من السهل دائمًا تبديل قاعدة البيانات الخاصة بك لاحقًا، كما أن استخدام sqlite يكون أسهل حقًا إذا كنت تقوم بالتطوير على جهاز Mac.

في مشروع جديد، سهل للغاية:

rails new your_new_project_name -d mysql

في المشروع الحالي، بالتأكيد أكثر تعقيدًا.لقد أعطاني هذا عددًا من المشكلات المتعلقة بمشاريع السكك الحديدية الحالية.هذا النوع يعمل معي:

# On Gemfile:
gem 'mysql2',  '>= 0.3.18', '< 0.5' # copied from a new project for rails 5.1 :)
gem 'activerecord-mysql-adapter' # needed for mysql..

# On Dockerfile or on CLI:
sudo apt-get install -y  mysql-client libmysqlclient-dev 

تأكد أولاً من تثبيت MySQL Gem، إذا لم يكن الأمر كذلك؟من كتابة الأمر التالي في وحدة التحكم الخاصة بك

gem install mysql2

ثم قم بإنشاء تطبيق Rails جديد وقم بتعيين قاعدة بيانات MySQL كقاعدة بيانات افتراضية عن طريق كتابة الأمر التالي في وحدة التحكم الخاصة بك

rails new app-name -d mysql

استخدم الأمر التالي لإنشاء تطبيق جديد لواجهة برمجة التطبيقات (API) باستخدام قاعدة بيانات MySQL

rails new <appname> --api -d mysql


  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: 
  socket: /var/run/mysqld/mysqld.sock

قاعدة البيانات.yml

# MySQL. Versions 5.1.10 and up are supported.
#
# Install the MySQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing:
#   https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
#
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  host: localhost
  database: database_name
  username: username
  password: secret

development:
  <<: *default

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default

# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>
#
production:
  <<: *default

ملف جيمفيل:

# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.4.4', '< 0.6.0'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top