Tôi muốn chạy một tệp Ruby trong ngữ cảnh của môi trường Rails. Rails runner hầu như làm những gì tôi muốn làm, nhưng tôi muốn chỉ cần cung cấp cho nó tên tập tin và các đối số. Tôi khá chắc chắn điều này là có thể vì tôi đã làm nó trước đây. Ai đó có thể nhắc tôi làm thế nào để làm điều này?Làm cách nào để chạy một tệp Ruby trong môi trường Rails?
Trả lời
Chỉ cần yêu cầu environment.rb
trong tập lệnh của bạn. Nếu kịch bản của bạn nằm ở script
thư mục của Rails của bạn ứng dụng làm
require File.expand_path('../../config/environment', __FILE__)
Bạn có thể kiểm soát môi trường sử dụng (phát triển/kiểm tra/sản xuất) bằng cách thiết lập các biến môi trường RAILS_ENV
khi chạy kịch bản.
RAILS_ENV=production ruby script/test.rb
Cách đơn giản nhất là với rails runner
vì bạn không cần phải sửa đổi tập lệnh của mình.
http://guides.rubyonrails.org/command_line.html#rails-runner
Trong Rails 2, script/runner.
Chỉ cần nói rails runner script.rb
Runner chạy mã Ruby trong bối cảnh Rails không tương tác.
Từ rails runner
lệnh:
Usage: runner [options] ('Some.ruby(code)' or a filename)
-e, --environment=name Specifies the environment for the runner to operate under (test/development/production).
Default: development
-h, --help Show this help message.
Bạn cũng có thể sử dụng Á hậu như một dòng công việc cho các kịch bản của bạn như thế này:
-------------------------------------------------------------
#!/usr/bin/env /Users/me/rails_project/script/rails runner
Product.all.each { |p| p.price *= 2 ; p.save! }
-------------------------------------------------------------
Đây là một câu hỏi cũ, nhưng theo ý kiến của tôi, tôi thường tìm nó rất hữu ích để tạo ra một công việc cào ... và nó thực sự rất dễ dàng.
Trong lib/tasks/example.rake
:
namespace :example do
desc "Sample description you'd see if you ran: 'rake --tasks' in the terminal"
task create_user: :environment do
User.create! first_name: "Foo", last_name: "Bar"
end
Và rồi trong thời gian thiết bị đầu cuối:
rake example:create_user
tại địa phương này sẽ được chạy trong bối cảnh cơ sở dữ liệu phát triển của bạn, và nếu chạy trên Heroku nó sẽ được chạy trong khi kết nối với cơ sở dữ liệu sản xuất của bạn. Tôi thấy điều này đặc biệt hữu ích để hỗ trợ di chuyển hoặc sửa đổi bảng.
- 1. Làm thế nào để tạo một môi trường mới trong Ruby on Rails?
- 2. Làm cách nào để chuyển sang các phiên bản cũ hơn của môi trường ruby / rails?
- 3. Làm thế nào để biết môi trường mã nào chạy?
- 4. Làm thế nào để chạy Rails console trong môi trường thử nghiệm với Zeus?
- 5. Ruby On Rails: cách tạo các tệp hạt giống khác nhau cho các môi trường
- 6. Biến môi trường Ruby
- 7. Làm cách nào để chạy di chuyển cho một môi trường cụ thể trong laravel
- 8. Có một biến môi trường qua Ruby
- 9. Tạo môi trường mới trong Rails
- 10. Ruby on Rails: Làm cách nào tôi có thể chỉ định môi trường tập lệnh Á hậu
- 11. Xuất biến môi trường trong Ruby
- 12. Bàn điều khiển Rails: Chạy một tệp Ruby nhiều lần
- 13. Thực hiện mã ruby trong môi trường hạn chế
- 14. Chạy Tomcat trong môi trường sản xuất
- 15. Opsworks Rails Bảng điều khiển Môi trường
- 16. Rails 3 - thiết lập môi trường
- 17. Có một cách dễ dàng để tìm môi trường thời gian chạy trong Pyramid
- 18. Làm cách nào để chạy nhiều dòng Ruby trong tệp html.erb
- 19. Heroku luôn chạy tài sản: biên dịch trước môi trường sản xuất cho Rails 3.2
- 20. Làm cách nào để truy cập biến môi trường trong dòng lệnh của tệp .desktop?
- 21. Làm cách nào để sử dụng các biến môi trường trong tệp .classpath của Eclipse?
- 22. Ruby on Rails chạy trên một slice vps
- 23. Làm cách nào để mở và hiển thị các tệp SVG trong môi trường .NET?
- 24. Rails 3 http_basic_authenticate_with chỉ trong môi trường sản xuất?
- 25. Tạo môi trường Ruby on Rails trên Windows, trong hộp thoại VM Vagrant
- 26. Làm cách nào để thiết lập tệp database.yml trong Rails?
- 27. Làm cách nào để chạy một Gem Ruby?
- 28. Symfony2, Làm cách nào để thay đổi môi trường?
- 29. Làm cách nào để tạo các tác vụ Rake chạy dưới ứng dụng/môi trường Sinantra của tôi?
- 30. Làm cách nào để tham chiếu môi trường cục bộ trong một hàm, trong R?
Nếu tôi chạy trên mã, nó sẽ cung cấp "home/apps/config/environment". Nếu tôi có 2 ứng dụng đường ray chạy trên cùng một thư mục. Môi trường nào sẽ mất? tôi đang đối mặt với vấn đề này trong hộp địa phương của tôi. vui lòng đề nghị –
@VijaySali Tôi giả định rằng bạn đang chạy tập lệnh của bạn từ thư mục 'app/script'. Tệp môi trường sẽ được lấy từ ứng dụng riêng lẻ. – iltempo
yup cảm ơn nó đã làm việc cho tôi, tôi đã thêm ENV ['RAILS_ENV'] cũng như –