2010-09-01 40 views
13

Tôi bắt đầu sử dụng Rails 2 vào tháng 4 năm ngoái nhưng đã ngừng hoạt động vào tháng 6 vì tôi nghĩ rằng khi Rails 3 được phát hành sẽ thực tế hơn vì rất nhiều nó đã được tái cấu trúc và tái cơ cấu hoàn toàn. Tôi đã từng làm việc với Ubuntu 10.04 (với SQLite3 là db mặc định) nhưng bây giờ tôi đang sử dụng Windows 7 và MySQL 5. Tôi đã cài đặt bộ điều hợp gem cho MySQL, nhưng để sử dụng nó, tôi vẫn cần phải chỉnh sửa database.yml. Cảm ơn.Làm cách nào để đặt MySQL làm cơ sở dữ liệu mặc định trong Rails 3?

Trả lời

25

Về cấu hình cơ sở dữ liệu, không có gì thực sự thay đổi giữa Rails 2 và 3 ngoại trừ cách bạn tải trình điều khiển MySQL của mình. Nơi đây từng được thực hiện trong config/environment.rb nhưng bây giờ được thực hiện trong Gemfile:

gem 'mysql' 

Các tập tin mặc định config/database.yml được thiết lập với SQLite, nhưng bạn có thể dễ dàng thay đổi theo điều này là MySQL. Phiên bản chung có dạng:

defaults: &defaults 
    adapter: mysql 
    username: localdev 
    password: mylocaldevpasswordwhateveritis 
    host: localhost 

development: 
    <<: *defaults 
    database: project_dev 

test: 
    <<: *defaults 
    database: project_test 

Đó là dòng khai báo adapter đặt trình điều khiển để sử dụng.

+0

Có cách nào để đặt mysql làm mặc định thay vì sqlite không? –

+0

Đối với các dự án mới? Không dễ dàng. Đây là một tính năng cốt lõi của Rails. Thông thường mọi người chuẩn bị một dự án "khung xương" cho các ứng dụng mới của họ được tùy chỉnh theo yêu cầu, với trình điều khiển cơ sở dữ liệu, plugin, đá quý được thiết lập như bạn thích, sau đó sao chép nó cho các dự án mới. Bằng cách đó bạn có thể có bất kỳ giá trị mặc định nào bạn thích, bất kể kỳ lạ như thế nào. – tadman

+0

Cảm ơn. Vì vậy, tôi không thể làm cho nó mặc định cho các dự án mới. – arscariosus

7

Trong câu trả lời của tadman, hãy sử dụng gem 'mysql2' cho đường ray 3 vì đường ray 3 giờ sử dụng bộ điều hợp mysql mới !!

+0

Ngoài ra, trong bộ điều hợp database.yml ': mysql' -> 'adapter: mysql2' –

3

Bạn có thể thay đổi đường ray thành mặc định thành MySql khi bạn tạo một ứng dụng mới, nhưng bạn phải chỉnh sửa một dòng trong cài đặt đường ray của mình. Bạn sẽ phải thực hiện thay đổi cho mọi phiên bản và mỗi khi bạn cập nhật đá quý đường ray.

Tôi sử dụng Ruby-Enterprise. Vì vậy, đây là những gì tôi làm:

Trong tập tin (trong đó 1,8 là phiên bản ruby ​​và 3.0.4 là phiên bản đường ray):

/opt/ruby-enterprise/lib/ruby/gems/1.8/gems/railties-3.0.4/lib/rails/generators/rails/app/app_generator.rb 

Chỉnh sửa: Trong ray-3.1.0-rc1 file là:

gems/railties-3.1.0.rc1/lib/rails/generators/app_base.rb 

Tìm kiếm dòng này:

class_option :database, :type => :string, :aliases => "-d", :default => "sqlite3", 

Thay đổi "sqlite3" thành "mysql".

class_option :database, :type => :string, :aliases => "-d", :default => "mysql", 

Vì vậy, thay vì thực hiện:

rails new application_name -d mysql 

Tôi chỉ có thể làm (và database.yml và Gemfiles được cấu hình cho viên ngọc mysql2):

rails new application_name 

này giả định bạn có đá quý mysql2 đã được cài đặt đúng. Ngoài ra, tôi chỉ làm điều này kể từ khi Rails 3 xuất hiện. Nó có thể tương tự cho các phiên bản trước. Một lần nữa, mỗi lần bạn cập nhật Rails, bạn sẽ phải tìm và chỉnh sửa tệp đó.

+1

Tôi đang sử dụng RVM với Ruby 1.9.2 và Rails 3 và đường dẫn đến tệp cho tôi được tìm thấy tại: $ (rvm gemdir) /gems/railties-3.0.5/lib/rails/generators/rails/app/app_generator.rb. Các giảng viên làm việc hoàn hảo. – gunit888

0

Kể từ Rails 3.2 bạn có thể định nghĩa một tập tin .railsrc với các tùy chọn dòng lệnh tùy chỉnh mà sẽ luôn luôn áp dụng đối với rails new

Vì vậy, nếu bạn tạo một tập tin gọi là .railsrc và đặt nó trong thư mục chính của bạn w/các nội dung như -d mysql nó sẽ làm cho mysql trở thành cơ sở dữ liệu mặc định của bạn. Bạn có thể đặt bất kỳ tùy chọn dòng lệnh nào trong đó (bao gồm application templates tuyệt vời!)

Chạy rails new --help từ dòng lệnh để xem tất cả các tùy chọn của bạn.

Các vấn đề liên quan