2012-04-14 19 views
9

Tôi đang cố gắng để có được Octopress (http://octopress.org/) làm việc, nhưng tôi đang gặp một số vấn đề. Tôi đang sử dụng POW (http://pow.cx/) và có vẻ như không tải phiên bản Ruby chính xác cho tôi (sử dụng RVM).Pow, RVM và ZSH không hoạt động cùng nhau

Luôn sử dụng phiên bản ruby ​​mặc định RVM chứ không phải phiên bản được chỉ định trong .rvmrc. Phiên bản Ruby mặc định của tôi trong RVM là: ruby-1.9.3-p125.

Trong file .rvmrc của tôi, tôi có điều này: rvm use 1.9.2 tôi nhận được lỗi này trong trình duyệt khi quý khách đến thăm trang web của tôi:

LoadError: cannot load such file -- bundler/setup 
~/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
~/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
~/Sites/Lejnus/lejnus/config.ru:1:in `block in <main>' 
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/builder.rb:4:in `instance_eval' 
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/builder.rb:4:in `initialize' 
~/Sites/Lejnus/lejnus/config.ru:1:in `new' 
~/Sites/Lejnus/lejnus/config.ru:1:in `<main>' 
~/Library/Application  Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:50:in `eval' 
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:50:in `load_config' 
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:43:in `initialize' 
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:13:in `new' 
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/lib/nack/server.rb:13:in `run' 
~/Library/Application Support/Pow/Versions/0.3.2/node_modules/nack/bin/nack_worker:4:in `<main>' 

Tại sao nó sử dụng 1.9.3-p125 khi 1.9.2 được quy định tại tệp .rvmrc của tôi? Nếu tôi đặt 1.9.2 là mặc định, nó hoạt động tất nhiên ...

Không phải là nó phải làm phép thuật này cho tôi và sử dụng các phiên bản ruby ​​chính xác?

+0

rbenv rõ ràng hơn và đơn giản hơn rvm. Tất cả các điệu nhảy của tôi xung quanh lửa với rvm đã không thành công, nhưng trên rbenv tay khác chỉ đơn giản là làm việc. – frp

+0

Kiểm tra xem bạn có gặp vấn đề tương tự với bash thay vì zsh hay không. – frp

+0

Tôi đã thử trong bash, không có sự khác biệt. – Linus

Trả lời

15

Ok, có vẻ như POW đang chuyển khỏi RVM.

tôi cần thiết để chạy này trong thư mục gốc các dự án của tôi để làm cho nó làm việc: rvm env . -- --env > .powenv

+1

Tôi chỉ cố gắng chạy lệnh này nhưng tôi gặp lỗi với --env 'Đối số dòng lệnh không được nhận dạng: '. --env '(xem:' sử dụng rvm ') '. Nó có bình thường không? –

+0

@YannickSchall Tôi đã sử dụng lệnh này hàng tuần cho đến khi tôi nâng cấp RVM tuần trước và bắt đầu thấy thông báo này. Tôi nghĩ rằng hỗ trợ bằng cách nào đó đã được giảm cho tùy chọn này nhưng tôi không thể tìm thấy bất kỳ tài liệu nào về nó. – jakeonrails

+0

tôi đã sắp xếp vấn đề bằng cách thêm một .powrc vào thư mục gốc của dự ánvới mã sau đây 'if [-f" $ rvm_path/scripts/rvm "] && [-f" .rvmrc "]; sau đó nguồn "$ rvm_path/scripts/rvm" nguồn ".rvmrc" fi' –

1

Đây là những gì đã giải quyết được vấn đề đối với tôi:

rvm env -- `rvm current` > .powenv

Bạn cũng có thể tạo ra một cái móc RVM (as commented here) để tự động chuyển đổi .powenv khi bạn thay đổi ruby ​​hiện tại env:

 
# ~/.rvm/hooks/after_use_update_powrc 
for file in `ls ~/.pow/` ; do 
    POW_LINK_TARGET=`readlink ~/.pow/$file` 

    if [ `pwd` = $POW_LINK_TARGET ]; then 
    rvm env -- ``rvm current`` > .powenv 
    fi 
done 

Đừng quên để làm cho nó thực thi:

chmod +x ~/.rvm/hooks/after_use_update_powrc

+0

Xin chào Pavel, có sự khác biệt nào giữa 'rvm env - \' rvm hiện tại \ '' và chỉ 'rvm env' không? Đơn giản chỉ cần làm 'rvm env> .powenv' hoạt động tốt cho tôi. –

+0

Tôi chưa thử điều đó. Đây là những gì tôi đọc ở đâu đó và đăng nó kể từ khi nó được xác nhận để làm việc. Nhưng bạn có thể dễ dàng kiểm tra và xem liệu có sự khác biệt trong đầu ra của cả hai lệnh hay không. –

+0

Không có sự khác biệt đối với tôi nhưng có lẽ có thể có sự khác biệt trong một số trường hợp nhất định. –

2

tôi đã sắp xếp được vấn đề bằng cách thêm một .powrc ở thư mục gốc của dự án với các mã sau

if [ -f "$rvm_path/scripts/rvm" ] && [ -f ".rvmrc" ]; then 
    source "$rvm_path/scripts/rvm" 
    source ".rvmrc" 
fi 

[Đã chỉnh sửa để thêm: Điều này được đề xuất trong Pow documentation]